|
|
An abstract base class for implementing lockable objects
~Lockable ()
| ~Lockable |
[virtual]
Destructor
bool lock (long maxwait = -1)
| lock |
[pure virtual]
Attempt to lock the object and eventually wait for it
Parameters:
maxwait | Time in microseconds to wait, -1 wait forever |
Returns: True if successfully locked, false on failure
bool unlock ()
| unlock |
[pure virtual]
Unlock the object, does never wait
Returns: True if successfully unlocked the object
bool locked ()
| 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
bool check (long maxwait = -1)
| check |
[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
bool unlockAll ()
| 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
void wait (unsigned long maxwait)
| wait |
[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 |
unsigned long wait ()
| wait |
[static]
Get the maximum wait time used for debugging purposes
Returns: Maximum time in microseconds, zero if no maximum is set
void startUsingNow ()
| 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.
void disableSafety ()
| disableSafety |
[static]
Disable some safety and sanity check features. This provides a performance improvement but makes the code less safe and more difficult to debug locking issues.
Generated by: paulc on bussard on Fri Dec 21 16:28:34 2012, using kdoc 2.0a54. |