[#BloombergLP-bslmt-RecursiveMutex] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmt.adoc[bslmt]::RecursiveMutex :relfileprefix: ../../ :mrdocs: 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. == Synopsis Declared in `<bslmt_recursivemutex.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class RecursiveMutex; ---- == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmt/RecursiveMutex/2constructor.adoc[`RecursiveMutex`] [.small]#[constructor]# | Create a recursive mutex object in the unlocked state. This method does not return normally unless there are sufficient system resources to construct the object. | xref:BloombergLP/bslmt/RecursiveMutex/2destructor.adoc[`~RecursiveMutex`] [.small]#[destructor]# | Destroy this recursive mutex object. | xref:BloombergLP/bslmt/RecursiveMutex/lock.adoc[`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. | xref:BloombergLP/bslmt/RecursiveMutex/tryLock.adoc[`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. | xref:BloombergLP/bslmt/RecursiveMutex/unlock.adoc[`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. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#