#include <CArchMultithreadPosix.h>
Inherits IArchMultithread.
Inheritance diagram for CArchMultithreadPosix:
accessors | |
void * | getNetworkDataForThread (CArchThread) |
static CArchMultithreadPosix * | getInstance () |
Public Member Functions | |
CArchMultithreadPosix () | |
virtual | ~CArchMultithreadPosix () |
virtual CArchCond | newCondVar () |
Create a condition variable. | |
virtual void | closeCondVar (CArchCond) |
Destroy a condition variable. | |
virtual void | signalCondVar (CArchCond) |
Signal a condition variable. | |
virtual void | broadcastCondVar (CArchCond) |
Broadcast a condition variable. | |
virtual bool | waitCondVar (CArchCond, CArchMutex, double timeout) |
Wait on a condition variable. | |
virtual CArchMutex | newMutex () |
Create a recursive mutex. | |
virtual void | closeMutex (CArchMutex) |
Destroy a mutex. | |
virtual void | lockMutex (CArchMutex) |
Lock a mutex. | |
virtual void | unlockMutex (CArchMutex) |
Unlock a mutex. | |
virtual CArchThread | newThread (ThreadFunc, void *) |
virtual CArchThread | newCurrentThread () |
Get a reference to the calling thread. | |
virtual CArchThread | copyThread (CArchThread) |
Copy a thread object. | |
virtual void | closeThread (CArchThread) |
Release a thread reference. | |
virtual void | cancelThread (CArchThread) |
Force a thread to exit. | |
virtual void | setPriorityOfThread (CArchThread, int n) |
Change thread priority. | |
virtual void | testCancelThread () |
Cancellation point. | |
virtual bool | wait (CArchThread, double timeout) |
Wait for a thread to exit. | |
virtual bool | isSameThread (CArchThread, CArchThread) |
Compare threads. | |
virtual bool | isExitedThread (CArchThread) |
Test if thread exited. | |
virtual void * | getResultOfThread (CArchThread) |
Returns the exit code of a thread. | |
virtual ThreadID | getIDOfThread (CArchThread) |
Returns an ID for a thread. | |
virtual void | setSignalHandler (ESignal, SignalFunc, void *) |
virtual void | raiseSignal (ESignal) |
manipulators | |
void | setNetworkDataForCurrentThread (void *) |
Definition at line 35 of file CArchMultithreadPosix.h.
void CArchMultithreadPosix::broadcastCondVar | ( | CArchCond | ) | [virtual] |
Broadcast a condition variable.
Broadcasting a condition variable releases all waiting threads.
Implements IArchMultithread.
Definition at line 206 of file CArchMultithreadPosix.cpp.
References CArchCondImpl::m_cond.
void CArchMultithreadPosix::cancelThread | ( | CArchThread | ) | [virtual] |
Force a thread to exit.
Causes thread
to exit when it next calls a cancellation point. A thread avoids cancellation as long as it nevers calls a cancellation point. Once it begins the cancellation process it must always let cancellation go to completion but may take as long as necessary to clean up.
Implements IArchMultithread.
Definition at line 431 of file CArchMultithreadPosix.cpp.
References lockMutex(), CArchThreadImpl::m_cancel, CArchThreadImpl::m_cancelling, CArchThreadImpl::m_exited, CArchThreadImpl::m_thread, and unlockMutex().
void CArchMultithreadPosix::closeThread | ( | CArchThread | ) | [virtual] |
Release a thread reference.
Deletes the given thread object. This does not destroy the thread the object referred to, even if there are no remaining references. Use cancelThread() and waitThread() to stop a thread and wait for it to exit.
Implements IArchMultithread.
Definition at line 401 of file CArchMultithreadPosix.cpp.
References lockMutex(), CArchThreadImpl::m_func, CArchThreadImpl::m_refCount, CArchThreadImpl::m_thread, and unlockMutex().
Referenced by wait().
CArchThread CArchMultithreadPosix::copyThread | ( | CArchThread | ) | [virtual] |
Copy a thread object.
Returns a reference to to thread referred to by thread
.
Implements IArchMultithread.
Definition at line 424 of file CArchMultithreadPosix.cpp.
IArchMultithread::ThreadID CArchMultithreadPosix::getIDOfThread | ( | CArchThread | ) | [virtual] |
Returns an ID for a thread.
Returns some ID number for thread
. This is for logging purposes. All thread objects referring to the same thread return the same ID. However, clients should us isSameThread() to compare thread objects instead of comparing IDs.
Implements IArchMultithread.
Definition at line 551 of file CArchMultithreadPosix.cpp.
References CArchThreadImpl::m_id.
void * CArchMultithreadPosix::getResultOfThread | ( | CArchThread | ) | [virtual] |
Returns the exit code of a thread.
Waits indefinitely for thread
to exit (if it hasn't yet) then returns the thread's exit code.
(Cancellation point)
Implements IArchMultithread.
Definition at line 542 of file CArchMultithreadPosix.cpp.
References lockMutex(), CArchThreadImpl::m_result, and unlockMutex().
bool CArchMultithreadPosix::isExitedThread | ( | CArchThread | ) | [virtual] |
Test if thread exited.
Returns true iff thread
has exited.
Implements IArchMultithread.
Definition at line 533 of file CArchMultithreadPosix.cpp.
References lockMutex(), CArchThreadImpl::m_exited, and unlockMutex().
Referenced by wait().
bool CArchMultithreadPosix::isSameThread | ( | CArchThread | , | |
CArchThread | ||||
) | [virtual] |
Compare threads.
Returns true iff two thread objects refer to the same thread. Note that comparing thread objects directly is meaningless.
Implements IArchMultithread.
Definition at line 527 of file CArchMultithreadPosix.cpp.
CArchCond CArchMultithreadPosix::newCondVar | ( | ) | [virtual] |
Create a condition variable.
The condition variable is an opaque data type.
Implements IArchMultithread.
Definition at line 179 of file CArchMultithreadPosix.cpp.
References CArchCondImpl::m_cond.
CArchThread CArchMultithreadPosix::newCurrentThread | ( | ) | [virtual] |
Get a reference to the calling thread.
Returns a thread representing the current (i.e. calling) thread.
Implements IArchMultithread.
Definition at line 391 of file CArchMultithreadPosix.cpp.
References lockMutex(), and unlockMutex().
CArchMutex CArchMultithreadPosix::newMutex | ( | ) | [virtual] |
Create a recursive mutex.
Creates a recursive mutex. A thread may lock a recursive mutex when it already holds a lock on that mutex. The mutex is an opaque data type.
Implements IArchMultithread.
Definition at line 270 of file CArchMultithreadPosix.cpp.
References CArchMutexImpl::m_mutex.
Referenced by CArchMultithreadPosix().
void CArchMultithreadPosix::setPriorityOfThread | ( | CArchThread | , | |
int | n | |||
) | [virtual] |
Change thread priority.
Changes the priority of thread
by n
. If n
is positive the thread has a lower priority and if negative a higher priority. Some architectures may not support either or both directions.
Implements IArchMultithread.
Definition at line 451 of file CArchMultithreadPosix.cpp.
void CArchMultithreadPosix::signalCondVar | ( | CArchCond | ) | [virtual] |
Signal a condition variable.
Signalling a condition variable releases one waiting thread.
Implements IArchMultithread.
Definition at line 198 of file CArchMultithreadPosix.cpp.
References CArchCondImpl::m_cond.
void CArchMultithreadPosix::testCancelThread | ( | ) | [virtual] |
Cancellation point.
This method does nothing but is a cancellation point. Clients can make their own functions cancellation points by calling this method at appropriate times.
(Cancellation point)
Implements IArchMultithread.
Definition at line 459 of file CArchMultithreadPosix.cpp.
References lockMutex(), and unlockMutex().
Referenced by waitCondVar().
bool CArchMultithreadPosix::wait | ( | CArchThread | , | |
double | timeout | |||
) | [virtual] |
Wait for a thread to exit.
Waits for up to timeout
seconds for thread
to exit (normally or by cancellation). Waits forever if timeout
< 0. Returns true if the thread exited, false otherwise. Waiting on the current thread returns immediately with false.
(Cancellation point)
Implements IArchMultithread.
Definition at line 471 of file CArchMultithreadPosix.cpp.
References closeThread(), isExitedThread(), lockMutex(), and unlockMutex().
bool CArchMultithreadPosix::waitCondVar | ( | CArchCond | , | |
CArchMutex | , | |||
double | timeout | |||
) | [virtual] |
Wait on a condition variable.
Wait on a conditation variable for up to timeout
seconds. If timeout
is < 0 then there is no timeout. The mutex must be locked when this method is called. The mutex is unlocked during the wait and locked again before returning. Returns true if the condition variable was signalled and false on timeout.
(Cancellation point)
Implements IArchMultithread.
Definition at line 214 of file CArchMultithreadPosix.cpp.
References CArchCondImpl::m_cond, CArchMutexImpl::m_mutex, and testCancelThread().