GNU CommonC++
|
A conditional variable synchcronization object for one to one and one to many signal and control events between processes. More...
#include <thread.h>
Public Member Functions | |
Conditional (const char *id=NULL) | |
Create an instance of a conditional. | |
virtual | ~Conditional () |
Destroy the conditional. | |
void | signal (bool broadcast) |
Signal a conditional object and a waiting threads. | |
bool | wait (timeout_t timer=0, bool locked=false) |
Wait to be signaled from another thread. | |
void | enterMutex (void) |
Locks the conditional's mutex for this thread. | |
void | lock (void) |
In the future we will use lock in place of enterMutex since the conditional composite is not a recursive mutex, and hence using enterMutex may cause confusion in expectation with the behavior of the Mutex class. | |
bool | tryEnterMutex (void) |
Tries to lock the conditional for the current thread. | |
bool | test (void) |
void | leaveMutex (void) |
Leaving a mutex frees that mutex for use by another thread. | |
void | unlock (void) |
A conditional variable synchcronization object for one to one and one to many signal and control events between processes.
Conditional variables may wait for and receive signals to notify when to resume or perform operations. Multiple waiting threads may be woken with a broadcast signal.
ost::Conditional::Conditional | ( | const char * | id = NULL | ) |
Create an instance of a conditional.
id | name of conditional, optional for deadlock testing. |
virtual ost::Conditional::~Conditional | ( | ) | [virtual] |
Destroy the conditional.
void ost::Conditional::enterMutex | ( | void | ) |
Locks the conditional's mutex for this thread.
Remember that Conditional's mutex is NOT a recursive mutex!
void ost::Conditional::leaveMutex | ( | void | ) |
Leaving a mutex frees that mutex for use by another thread.
void ost::Conditional::lock | ( | void | ) | [inline] |
In the future we will use lock in place of enterMutex since the conditional composite is not a recursive mutex, and hence using enterMutex may cause confusion in expectation with the behavior of the Mutex class.
void ost::Conditional::signal | ( | bool | broadcast | ) |
Signal a conditional object and a waiting threads.
broadcast | this signal to all waiting threads if true. |
bool ost::Conditional::test | ( | void | ) | [inline] |
bool ost::Conditional::tryEnterMutex | ( | void | ) |
Tries to lock the conditional for the current thread.
Behaves like enterMutex , except that it doesn't block the calling thread.
void ost::Conditional::unlock | ( | void | ) | [inline] |
bool ost::Conditional::wait | ( | timeout_t | timer = 0 , |
bool | locked = false |
||
) |
Wait to be signaled from another thread.
timer | time period to wait. |
locked | flag if already locked the mutex. |