Semaphore implementation.
More...
#include <yateclass.h>
Semaphore implementation.
A semaphore object for synchronizing threads, can also be used as a token bucket
Semaphore |
( |
unsigned int |
maxcount = 1 , |
|
|
const char * |
name = 0 , |
|
|
unsigned int |
initialCount = 1 |
|
) |
| |
|
explicit |
Construct a new unlocked semaphore
- Parameters
-
maxcount | Maximum unlock count, must be strictly positive |
name | Static name of the semaphore (for debugging purpose only) |
initialCount | Initial semaphore count, must not be greater than maxcount |
Copy constructor, creates a shared semaphore
- Parameters
-
original | Reference of the semaphore to share |
Get the number of semaphores counting the shared ones only once
- Returns
- Count of individual semaphores
static bool efficientTimedLock |
( |
| ) |
|
|
static |
Check if a timed lock() is efficient on this platform
- Returns
- True if a lock with a maxwait parameter is efficiently implemented
virtual bool lock |
( |
long |
maxwait = -1 | ) |
|
|
virtual |
Attempt to get a lock on the semaphore and eventually wait for it
- Parameters
-
maxwait | Time in microseconds to wait, -1 wait forever |
- Returns
- True if successfully locked, false on failure
Implements Lockable.
virtual bool locked |
( |
| ) |
const |
|
virtual |
Check if the semaphore is currently locked (waiting) - as it's asynchronous it guarantees nothing if other thread changes status
- Returns
- True if the semaphore was locked when the function was called
Implements Lockable.
Get the number of currently locked (waiting) semaphores
- Returns
- Count of locked semaphores, -1 if unknown (not tracked)
Assignment operator makes the semaphore shared with the original
- Parameters
-
original | Reference of the semaphore to share |
Unlock the semaphore, does never wait nor get over counter maximum
- Returns
- True if successfully unlocked
Implements Lockable.
The documentation for this class was generated from the following file: