16#define ARCH_MULTITHREAD ArchMultithreadPosix
83 void startSignalHandler();
94 static void *threadFunc(
void *vrep);
95 static void threadCancel(
int);
96 static void *threadSignalHandler(
void *vrep);
98 using ThreadList = std::list<ArchThread>;
102 bool m_newThreadCalled =
false;
104 std::mutex m_threadMutex;
106 ThreadList m_threadList;
109 pthread_t m_signalThread;
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
pthread_cond_t m_cond
Definition ArchMultithreadPosix.h:21
~ArchMultithreadPosix() override
Definition ArchMultithreadPosix.cpp:101
void * getNetworkDataForThread(ArchThread)
Definition ArchMultithreadPosix.cpp:114
void closeThread(ArchThread) final
Release a thread reference.
Definition ArchMultithreadPosix.cpp:328
void broadcastCondVar(ArchCond) override
Broadcast a condition variable.
Definition ArchMultithreadPosix.cpp:149
ArchMultithreadPosix & operator=(ArchMultithreadPosix const &)=delete
void setPriorityOfThread(ArchThread, int n) override
Change thread priority.
Definition ArchMultithreadPosix.cpp:378
void * getResultOfThread(ArchThread) override
Returns the exit code of a thread.
Definition ArchMultithreadPosix.cpp:459
bool wait(ArchThread, double timeout) override
Wait for a thread to exit.
Definition ArchMultithreadPosix.cpp:397
void cancelThread(ArchThread) override
Force a thread to exit.
Definition ArchMultithreadPosix.cpp:357
ArchMultithreadPosix & operator=(ArchMultithreadPosix &&)=delete
ArchMultithreadPosix(ArchMultithreadPosix &&)=delete
void closeMutex(ArchMutex) override
Destroy a mutex.
Definition ArchMultithreadPosix.cpp:219
bool isSameThread(ArchThread, ArchThread) override
Compare threads.
Definition ArchMultithreadPosix.cpp:448
ArchCond newCondVar() override
Create a condition variable.
Definition ArchMultithreadPosix.cpp:125
ArchMultithreadPosix()
Definition ArchMultithreadPosix.cpp:57
void closeCondVar(ArchCond) override
Destroy a condition variable.
Definition ArchMultithreadPosix.cpp:134
void testCancelThread() override
Cancellation point.
Definition ArchMultithreadPosix.cpp:385
ArchThread newThread(ThreadFunc, void *) final
Start a new thread.
Definition ArchMultithreadPosix.cpp:271
void lockMutex(ArchMutex) override
Lock a mutex.
Definition ArchMultithreadPosix.cpp:227
ArchThread newCurrentThread() override
Get a reference to the calling thread.
Definition ArchMultithreadPosix.cpp:320
void unlockMutex(ArchMutex) override
Unlock a mutex.
Definition ArchMultithreadPosix.cpp:250
bool waitCondVar(ArchCond, ArchMutex, double timeout) override
Wait on a condition variable.
Definition ArchMultithreadPosix.cpp:156
bool isExitedThread(ArchThread) override
Test if thread exited.
Definition ArchMultithreadPosix.cpp:453
ArchMutex newMutex() override
Create a recursive mutex.
Definition ArchMultithreadPosix.cpp:208
void setNetworkDataForCurrentThread(void *)
Definition ArchMultithreadPosix.cpp:107
void raiseSignal(ThreadSignal) override
Invoke the signal handler.
Definition ArchMultithreadPosix.cpp:478
ThreadID getIDOfThread(ArchThread) override
Returns an ID for a thread.
Definition ArchMultithreadPosix.cpp:465
void signalCondVar(ArchCond) override
Signal a condition variable.
Definition ArchMultithreadPosix.cpp:142
ArchThread copyThread(ArchThread) override
Copy a thread object.
Definition ArchMultithreadPosix.cpp:351
static ArchMultithreadPosix * getInstance()
Definition ArchMultithreadPosix.cpp:120
ArchMultithreadPosix(ArchMultithreadPosix const &)=delete
void setSignalHandler(ThreadSignal, SignalFunc, void *) override
Set the interrupt handler.
Definition ArchMultithreadPosix.cpp:470
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