#include <thread.h>
Inheritance diagram for ucommon::Semaphore:
Public Member Functions | |
void | operator++ (void) |
Convenience operator to wait on a counting semaphore. | |
void | operator-- (void) |
Convenience operator to release a counting semaphore. | |
void | release (void) |
Release the semaphore after waiting for it. | |
Semaphore (unsigned count=0) | |
Construct a semaphore with an initial count of threads to permit. | |
void | set (unsigned count) |
Alter semaphore limit at runtime. | |
bool | wait (timeout_t timeout) |
Wait until the semphore usage count is less than the thread limit. | |
void | wait (void) |
Wait until the semphore usage count is less than the thread limit. | |
Protected Member Functions | |
virtual void | _share (void) |
Access interface to share lock the object. | |
virtual void | _unlock (void) |
Protected Attributes | |
unsigned | count |
unsigned | used |
unsigned | waits |
A semaphore will allow threads to pass through it until the count is reached, and blocks further threads. Unlike pthread semaphore, our semaphore class supports it's count limit to be altered during runtime and the use of timed waits. This class also implements the shared_lock protocol.
Definition at line 853 of file thread.h.
void ucommon::Semaphore::set | ( | unsigned | count | ) |
Alter semaphore limit at runtime.
count | of threads to allow. |
bool ucommon::Semaphore::wait | ( | timeout_t | timeout | ) |
Wait until the semphore usage count is less than the thread limit.
Increase used count for our thread when unblocked, or return without changing if timed out.
timeout | to wait in millseconds. |
Reimplemented from ucommon::Conditional.
void ucommon::Semaphore::wait | ( | void | ) |
Wait until the semphore usage count is less than the thread limit.
Increase used count for our thread when unblocked.
Reimplemented from ucommon::Conditional.
Referenced by ucommon::wait().