diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-03-25 11:37:06 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-03-25 11:37:06 +0000 |
commit | 9b6337bec9b8adfcb1746c76be752334869ac997 (patch) | |
tree | 4abd1175f5d47205166e7827a6ce81c99037df66 | |
parent | a4e0a1127a7db3e08399bfb1efffb14588323743 (diff) |
start of fix for bug #805
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11260 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | include/threadengine.h | 18 | ||||
-rw-r--r-- | include/threadengines/threadengine_win32.h | 4 | ||||
-rw-r--r-- | src/threadengine.cpp | 12 |
3 files changed, 20 insertions, 14 deletions
diff --git a/include/threadengine.h b/include/threadengine.h index e1400eb95..c11f2d817 100644 --- a/include/threadengine.h +++ b/include/threadengine.h @@ -20,6 +20,12 @@ #include "inspircd_config.h" #include "base.h" +#ifdef WINDOWS +#include "threadengines/threadengine_win32.h" +#endif + +class ThreadData; + /** Derive from this class to implement your own threaded sections of * code. Be sure to keep your code thread-safe and not prone to deadlocks * and race conditions if you MUST use threading! @@ -49,17 +55,7 @@ class CoreExport Thread : public Extensible { } - /** If this thread has a Creator set, call it to - * free the thread - */ - virtual ~Thread() - { - if (state) - { - state->FreeThread(this); - delete state; - } - } + virtual ~Thread(); /** Override this method to put your actual * threaded code here. diff --git a/include/threadengines/threadengine_win32.h b/include/threadengines/threadengine_win32.h index 0fc9b27bc..6bd1c2c00 100644 --- a/include/threadengines/threadengine_win32.h +++ b/include/threadengines/threadengine_win32.h @@ -77,7 +77,7 @@ class CoreExport Mutex private: CRITICAL_SECTION wutex; public: - Win32Mutex() + Mutex() { InitializeCriticalSection(&wutex); } @@ -89,7 +89,7 @@ class CoreExport Mutex { LeaveCriticalSection(&wutex); } - ~Win32Mutex() + ~Mutex() { DeleteCriticalSection(&wutex); } diff --git a/src/threadengine.cpp b/src/threadengine.cpp index e7a316282..faa020234 100644 --- a/src/threadengine.cpp +++ b/src/threadengine.cpp @@ -20,4 +20,14 @@ #include "inspircd.h" #include "threadengine.h" - +/** If this thread has a Creator set, call it to + * free the thread + */ +virtual ~Thread::Thread() +{ + if (state) + { + state->FreeThread(this); + delete state; + } +} |