Quick Links: |
#include <bslmt_recursivemutex.h>
Public Member Functions | |
RecursiveMutex () | |
~RecursiveMutex () | |
void | lock () |
int | tryLock () |
void | unlock () |
This class
implements a recursive mutex (i.e., a mutex that can be locked any number of times by a thread, and then released by unlocking the mutex the same number of times). If there is an efficient native recursive mutex, this class wraps it. Otherwise, a reasonably efficient proprietary implementation is used. Note that Mutex
should be preferred if at all possible.
See Component bslmt_recursivemutex
bslmt::RecursiveMutex::RecursiveMutex | ( | ) |
Create a recursive mutex object in the unlocked state.
bslmt::RecursiveMutex::~RecursiveMutex | ( | ) |
Destroy this recursive mutex object.
void bslmt::RecursiveMutex::lock | ( | ) |
Acquire a lock on this object. If this object is currently locked, then suspend execution of the current thread until a lock can be acquired. Succeed immediately if this thread already holds the lock.
int bslmt::RecursiveMutex::tryLock | ( | ) |
Attempt to acquire a lock on this object. Return 0 on success, and a non-zero value if this object is already locked by another thread, or if an error occurs. Succeed immediately if this thread already holds the lock.
void bslmt::RecursiveMutex::unlock | ( | ) |
Release a lock on this object that was previously acquired through a call to lock
, or a successful call to tryLock
. To fully release the lock, a thread must invoke unlock
the same number of times it invoked lock
and tryLock
. The behavior is undefined unless the calling thread currently owns the lock on this recursive mutex.