- Containers: String, Array, HashMap 容器实现及测试 - Memory: Allocator, LinearAllocator, PoolAllocator, ProxyAllocator, MemoryManager 实现及测试 - Threading: Mutex, SpinLock, ReadWriteLock, Thread, Task, TaskSystem 实现及测试 - 修复Windows平台兼容性: _aligned_malloc, std::hash特化 - 修复构建错误和测试用例问题
42 lines
767 B
C++
42 lines
767 B
C++
#include "Threading/Thread.h"
|
|
#include <thread>
|
|
|
|
namespace XCEngine {
|
|
namespace Threading {
|
|
|
|
Thread::Thread() = default;
|
|
|
|
Thread::~Thread() {
|
|
if (m_thread.joinable()) {
|
|
m_thread.join();
|
|
}
|
|
}
|
|
|
|
void Thread::Join() {
|
|
if (m_thread.joinable()) {
|
|
m_thread.join();
|
|
}
|
|
}
|
|
|
|
void Thread::Detach() {
|
|
if (m_thread.joinable()) {
|
|
m_thread.detach();
|
|
}
|
|
}
|
|
|
|
Thread::Id Thread::GetCurrentId() {
|
|
auto threadId = std::this_thread::get_id();
|
|
return static_cast<Id>(std::hash<std::thread::id>{}(threadId));
|
|
}
|
|
|
|
void Thread::Sleep(uint32_t milliseconds) {
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));
|
|
}
|
|
|
|
void Thread::Yield() {
|
|
std::this_thread::yield();
|
|
}
|
|
|
|
} // namespace Threading
|
|
} // namespace XCEngine
|