summaryrefslogtreecommitdiffstats
path: root/src/OSSupport/IsThread.cpp
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-06-08 21:58:08 +0200
committerMattes D <github@xoft.cz>2014-06-08 21:58:30 +0200
commitaf4a21ea0689107b377818574cb07dc4a2e8b755 (patch)
treef4e6b11522a8c32ca9ae0b457d30bc893b18a653 /src/OSSupport/IsThread.cpp
parentAdded queue for adding entities to cWorld. (diff)
downloadcuberite-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 'src/OSSupport/IsThread.cpp')
-rw-r--r--src/OSSupport/IsThread.cpp21
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
+}
+
+
+
+