15#define WIN32_LEAN_AND_MEAN
18#define ARCH_MULTITHREAD ArchMultithreadWindows
100 static unsigned int __stdcall threadFunc(
void *vrep);
103 using ThreadList = std::list<ArchThread>;
107 std::mutex m_threadMutex;
109 ThreadList m_threadList;
static const WSAEVENT FAR DWORD
Definition ArchNetworkWinsock.cpp:54
static fd_set FAR fd_set FAR fd_set FAR const struct timeval FAR * timeout
Definition ArchNetworkWinsock.cpp:39
ArchThreadImpl * ArchThread
Opaque thread type. An opaque type representing a thread.
Definition IArchMultithread.h:53
ArchMutexImpl * ArchMutex
Opaque mutex type. An opaque type representing a mutex.
Definition IArchMultithread.h:39
ArchCondImpl * ArchCond
Opaque condition variable type. An opaque type representing a condition variable.
Definition IArchMultithread.h:25
Internal condition variable data. An architecture dependent type holding the necessary data for a con...
Definition ArchMultithreadPosix.h:19
HANDLE m_events[2]
Definition ArchMultithreadWindows.h:29
@ kSignal
Definition ArchMultithreadWindows.h:25
@ kBroadcast
Definition ArchMultithreadWindows.h:26
ArchMutex m_waitCountMutex
Definition ArchMultithreadWindows.h:31
int m_waitCount
Definition ArchMultithreadWindows.h:30
static ArchMultithreadWindows * getInstance()
Definition ArchMultithreadWindows.cpp:128
void testCancelThread() override
Cancellation point.
Definition ArchMultithreadWindows.cpp:389
void setSignalHandler(ThreadSignal, SignalFunc, void *) override
Set the interrupt handler.
Definition ArchMultithreadWindows.cpp:477
void signalCondVar(ArchCond) override
Signal a condition variable.
Definition ArchMultithreadWindows.cpp:151
void closeCondVar(ArchCond) override
Destroy a condition variable.
Definition ArchMultithreadWindows.cpp:143
void closeThread(ArchThread) override
Release a thread reference.
Definition ArchMultithreadWindows.cpp:294
ArchMutex newMutex() override
Create a recursive mutex.
Definition ArchMultithreadWindows.cpp:232
HANDLE getCancelEventForCurrentThread()
Definition ArchMultithreadWindows.cpp:121
void raiseSignal(ThreadSignal) override
Invoke the signal handler.
Definition ArchMultithreadWindows.cpp:485
void setPriorityOfThread(ArchThread, int n) override
Change thread priority.
Definition ArchMultithreadWindows.cpp:331
bool wait(ArchThread, double timeout) override
Wait for a thread to exit.
Definition ArchMultithreadWindows.cpp:399
ArchThread newCurrentThread() override
Get a reference to the calling thread.
Definition ArchMultithreadWindows.cpp:286
void lockMutex(ArchMutex) override
Lock a mutex.
Definition ArchMultithreadWindows.cpp:245
void * getResultOfThread(ArchThread) override
Returns the exit code of a thread.
Definition ArchMultithreadWindows.cpp:466
ThreadID getIDOfThread(ArchThread) override
Returns an ID for a thread.
Definition ArchMultithreadWindows.cpp:472
ArchThread copyThread(ArchThread) override
Copy a thread object.
Definition ArchMultithreadWindows.cpp:317
ArchMultithreadWindows()
Definition ArchMultithreadWindows.cpp:77
void unlockMutex(ArchMutex) override
Unlock a mutex.
Definition ArchMultithreadWindows.cpp:250
void closeMutex(ArchMutex) override
Destroy a mutex.
Definition ArchMultithreadWindows.cpp:239
void * getNetworkDataForThread(ArchThread)
Definition ArchMultithreadWindows.cpp:115
ArchThread newThread(ThreadFunc, void *) override
Start a new thread.
Definition ArchMultithreadWindows.cpp:255
void setNetworkDataForCurrentThread(void *)
Definition ArchMultithreadWindows.cpp:108
~ArchMultithreadWindows() override
Definition ArchMultithreadWindows.cpp:98
void broadcastCondVar(ArchCond) override
Broadcast a condition variable.
Definition ArchMultithreadWindows.cpp:164
ArchCond newCondVar() override
Create a condition variable.
Definition ArchMultithreadWindows.cpp:133
bool isSameThread(ArchThread, ArchThread) override
Compare threads.
Definition ArchMultithreadWindows.cpp:455
void cancelThread(ArchThread) override
Force a thread to exit.
Definition ArchMultithreadWindows.cpp:323
bool isExitedThread(ArchThread) override
Test if thread exited.
Definition ArchMultithreadWindows.cpp:460
bool waitCondVar(ArchCond, ArchMutex, double timeout) override
Wait on a condition variable.
Definition ArchMultithreadWindows.cpp:177
Internal mutex data. An architecture dependent type holding the necessary data for a mutex.
Definition ArchMultithreadPosix.h:25
pthread_mutex_t m_mutex
Definition ArchMultithreadPosix.h:27
Internal thread data. An architecture dependent type holding the necessary data for a thread.
Definition ArchMultithreadPosix.cpp:34
Interface for architecture dependent multithreading.
Definition IArchMultithread.h:61
void *(*)(void *) ThreadFunc
Type of thread entry point.
Definition IArchMultithread.h:64
unsigned int ThreadID
Type of thread identifier.
Definition IArchMultithread.h:66
void(*)(ThreadSignal, void *userData) SignalFunc
Type of signal handler function.
Definition IArchMultithread.h:81
ThreadSignal
Types of signals.
Definition IArchMultithread.h:73
@ MaxSignals
Number of differnt signals.
Definition IArchMultithread.h:78