Abstract interface for lockable objects.
More...
#include <yateclass.h>
Abstract interface for lockable objects.
An abstract base class for implementing lockable objects
◆ ~Lockable()
◆ check()
virtual bool check |
( |
long |
maxwait = -1 | ) |
|
|
virtual |
Check if the object is unlocked (try to lock and unlock it)
- Parameters
-
maxwait | Time in microseconds to wait, -1 to wait forever |
- Returns
- True if successfully locked and unlocked, false on failure
◆ enableSafety()
static void enableSafety |
( |
bool |
safe = true | ) |
|
|
static |
Enable some safety and sanity check features. This provides a safer code and easier locking debugging at the price of performance penalty. This method must be called early and not changed after initialization
- Parameters
-
safe | True to enable locking safety measures, false to disable |
◆ lock()
virtual bool lock |
( |
long |
maxwait = -1 | ) |
|
|
pure virtual |
◆ locked()
virtual bool locked |
( |
| ) |
const |
|
pure virtual |
Check if the object is currently locked - as it's asynchronous it guarantees nothing if other thread changes the status
- Returns
- True if the object was locked when the function was called
Implemented in Mutex, and Semaphore.
◆ safety()
Retrieve safety and sanity check features flag value
- Returns
- Locking safety measures flag value
◆ startUsingNow()
static void startUsingNow |
( |
| ) |
|
|
static |
Start actually using lockables, for platforms where these objects are not usable in global object constructors. This method must be called at least once somewhere from main() but before creating any threads and without holding any object locked.
◆ unlock()
Unlock the object, does never wait
- Returns
- True if successfully unlocked the object
Implemented in Mutex, and Semaphore.
◆ unlockAll()
virtual bool unlockAll |
( |
| ) |
|
|
virtual |
Fully unlock the object, even if it was previously multiple locked. There is no guarantee about the object status after the function returns. This function should be used only if you understand it very well
- Returns
- True if the object was fully unlocked
◆ wait() [1/2]
static unsigned long wait |
( |
| ) |
|
|
static |
Get the maximum wait time used for debugging purposes
- Returns
- Maximum time in microseconds, zero if no maximum is set
◆ wait() [2/2]
static void wait |
( |
unsigned long |
maxwait | ) |
|
|
static |
Set a maximum wait time for debugging purposes
- Parameters
-
maxwait | Maximum time in microseconds to wait for any lockable object when no time limit was requested, zero to disable limit |
The documentation for this class was generated from the following file: