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
|