summaryrefslogtreecommitdiff
path: root/include/threadengines/threadengine_win32.h
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-03-23 18:48:51 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-03-23 18:48:51 +0000
commit59dbcc1245468218ec7e2372b2678351382a34f0 (patch)
treec3482986dec7b96fdd03304af093e003cc479ca7 /include/threadengines/threadengine_win32.h
parentf9e6de5284aaacd55aa389445cd595bdcaa8339e (diff)
ThreadEngine: Allow interthread signaling without needing as many hacks
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11251 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/threadengines/threadengine_win32.h')
-rw-r--r--include/threadengines/threadengine_win32.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/include/threadengines/threadengine_win32.h b/include/threadengines/threadengine_win32.h
index c1f9f2cce..0fc9b27bc 100644
--- a/include/threadengines/threadengine_win32.h
+++ b/include/threadengines/threadengine_win32.h
@@ -95,5 +95,54 @@ class CoreExport Mutex
}
};
+class ThreadQueueData
+{
+ CRITICAL_SECTION mutex;
+ HANDLE event;
+ public:
+ ThreadQueueData()
+ {
+ InitializeCriticalSection(&mutex);
+ event = CreateEvent(NULL, false, false, NULL);
+ }
+
+ ~ThreadQueueData()
+ {
+ DeleteCriticalSection(&mutex);
+ }
+
+ void Lock()
+ {
+ EnterCriticalSection(&mutex);
+ }
+
+ void Unlock()
+ {
+ LeaveCriticalSection(&mutex);
+ }
+
+ void Wakeup()
+ {
+ PulseEvent(event);
+ }
+
+ void Wait()
+ {
+ LeaveCriticalSection(&mutex);
+ WaitForSingleObject(event, INFINITE);
+ EnterCriticalSection(&mutex);
+ }
+};
+
+class ThreadSignalData
+{
+ public:
+ int connFD;
+ ThreadSignalData()
+ {
+ connFD = -1;
+ }
+};
+
#endif