std::recursive_mutex (3) - Linux Manuals

std::recursive_mutex: std::recursive_mutex


std::recursive_mutex - std::recursive_mutex


Defined in header <mutex>
class recursive_mutex; (since C++11)

The recursive_mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads.
recursive_mutex offers exclusive, recursive ownership semantics:

* A calling thread owns a recursive_mutex for a period of time that starts when it successfully calls either lock or try_lock. During this period, the thread may make additional calls to lock or try_lock. The period of ownership ends when the thread makes a matching number of calls to unlock.
* When a thread owns a recursive_mutex, all other threads will block (for calls to lock) or receive a false return value (for try_lock) if they attempt to claim ownership of the recursive_mutex.
* The maximum number of times that a recursive_mutex may be locked is unspecified, but after that number is reached, calls to lock will throw std::system_error and calls to try_lock will return false.

The behavior of a program is undefined if a recursive_mutex is destroyed while still owned by some thread. The recursive_mutex class satisfies all requirements of Mutex and StandardLayoutType.

Member types

Member type Definition
native_handle_type(optional) implementation-defined

Member functions

              constructs the mutex
constructor (public member function)
              destroys the mutex
destructor (public member function)

operator= not copy-assignable
              (public member function)


              locks the mutex, blocks if the mutex is not available
lock (public member function)
              tries to lock the mutex, returns if the mutex is not available
try_lock (public member function)
              unlocks the mutex
unlock (public member function)

Native handle

              returns the underlying implementation-defined native handle object
native_handle (public member function)