A conditional variable synchcronization object for one to one and one to many signal and control events between processes.
More...
#include <thread.h>
Inheritance diagram for Conditional:
Collaboration diagram for Conditional:
Public Member Functions
Create an instance of a conditional.
More...
Signal a conditional object and a waiting threads.
More...
Wait to be signaled from another thread.
More...
Locks the conditional's mutex for this thread.
More...
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.
More...
Tries to lock the conditional for the current thread.
More...
Leaving a mutex frees that mutex for use by another thread.
More...
Private Attributes
Detailed Description
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.
- Warning
- While this class inherits from Mutex, the methods of the class Conditional just handle the system conditional variable, so the user is responsible for calling enterMutex and leaveMutex so as to avoid race conditions. Another thing to note is that if you have several threads waiting on one condition, not uncommon in thread pools, each thread must take care to manually unlock the mutex if cancellation occurs. Otherwise the first thread cancelled will deadlock the rest of the thread.
- Author
- David Sugar conditional.
- Todo:
- implement in win32
Definition at line 636 of file thread.h.
Constructor & Destructor Documentation
Conditional::Conditional
(
const char *
id = NULL
)
Create an instance of a conditional.
- Parameters
-
id name of conditional, optional for deadlock testing.
virtual Conditional::~Conditional
(
)
virtual
Member Function Documentation
void Conditional::enterMutex
(
void
)
Locks the conditional's mutex for this thread.
Remember that Conditional's mutex is NOT a recursive mutex!
- See Also
- leaveMutex
void Conditional::leaveMutex
(
void
)
Leaving a mutex frees that mutex for use by another thread.
- See Also
- enterMutex
void 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.
- See Also
- enterMutex
Definition at line 686 of file thread.h.
void Conditional::signal
(
bool
broadcast )
Signal a conditional object and a waiting threads.
- Parameters
-
broadcast this signal to all waiting threads if true.
bool Conditional::test
(
void
)
inline
bool Conditional::tryEnterMutex
(
void
)
Tries to lock the conditional for the current thread.
Behaves like enterMutex , except that it doesn't block the calling thread.
- Returns
- true if locking the mutex was succesful otherwise false
- See Also
- enterMutex
-
leaveMutex
void Conditional::unlock
(
void
)
inline
bool Conditional::wait
(
timeout_t
timer =
0
,
bool
locked = false
)
Wait to be signaled from another thread.
- Parameters
-
timer time period to wait.
locked flag if already locked the mutex.
Field Documentation
pthread_cond_t Conditional::_cond
private
pthread_mutex_t Conditional::_mutex
private
The documentation for this class was generated from the following file: