diff options
author | Mattes D <github@xoft.cz> | 2014-06-08 21:58:08 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-06-08 21:58:30 +0200 |
commit | af4a21ea0689107b377818574cb07dc4a2e8b755 (patch) | |
tree | f4e6b11522a8c32ca9ae0b457d30bc893b18a653 /src/OSSupport/IsThread.cpp | |
parent | Added queue for adding entities to cWorld. (diff) | |
download | cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.gz cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.bz2 cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.lz cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.xz cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.tar.zst cuberite-af4a21ea0689107b377818574cb07dc4a2e8b755.zip |
Diffstat (limited to '')
-rw-r--r-- | src/OSSupport/IsThread.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/OSSupport/IsThread.cpp b/src/OSSupport/IsThread.cpp index 04fc818e4..67f336c97 100644 --- a/src/OSSupport/IsThread.cpp +++ b/src/OSSupport/IsThread.cpp @@ -60,6 +60,9 @@ static void SetThreadName(DWORD dwThreadID, const char * threadName) cIsThread::cIsThread(const AString & iThreadName) : m_ShouldTerminate(false), m_ThreadName(iThreadName), + #ifdef _WIN32 + m_ThreadID(0), + #endif m_Handle(NULL_HANDLE) { } @@ -83,8 +86,8 @@ bool cIsThread::Start(void) ASSERT(m_Handle == NULL_HANDLE); // Has already started one thread? #ifdef _WIN32 // Create the thread suspended, so that the mHandle variable is valid in the thread procedure - DWORD ThreadID = 0; - m_Handle = CreateThread(NULL, 0, thrExecute, this, CREATE_SUSPENDED, &ThreadID); + m_ThreadID = 0; + m_Handle = CreateThread(NULL, 0, thrExecute, this, CREATE_SUSPENDED, &m_ThreadID); if (m_Handle == NULL) { LOGERROR("ERROR: Could not create thread \"%s\", GLE = %d!", m_ThreadName.c_str(), GetLastError()); @@ -96,7 +99,7 @@ bool cIsThread::Start(void) // Thread naming is available only in MSVC if (!m_ThreadName.empty()) { - SetThreadName(ThreadID, m_ThreadName.c_str()); + SetThreadName(m_ThreadID, m_ThreadName.c_str()); } #endif // _DEBUG and _MSC_VER @@ -177,3 +180,15 @@ unsigned long cIsThread::GetCurrentID(void) +bool cIsThread::IsCurrentThread(void) const +{ + #ifdef _WIN32 + return (GetCurrentThreadId() == m_ThreadID); + #else + return (m_Handle == pthread_self()); + #endif +} + + + + |