The `recursive_mutex` class is a model of the Mutex concept.

The `recursive_mutex` class is a model of the Mutex concept. It should be used to synchronize access to shared resources using Recursive locking mechanics.

For classes that model related mutex concepts, see `recursive_try_mutex` and `recursive_timed_mutex`.

For Unspecified locking mechanics, see `mutex`, `try_mutex`, and `timed_mutex`.

The `recursive_mutex` class supplies the following typedef, which models the specified locking strategy:

# Supported Lock Types

Lock Name | Lock Concept
--- | ---
scoped_lock | ScopedLock

The `recursive_mutex` class uses a Recursive locking strategy, so attempts to recursively lock a `recursive_mutex` object succeed and an internal "lock count" is maintained. Attempts to unlock a `recursive_mutex` object by threads that don't own a lock on it result in undefined behavior.

Like all mutex models in &Boost.Thread;, `recursive_mutex` leaves the scheduling policy as Unspecified. Programmers should make no assumptions about the order in which waiting threads acquire a lock.

`boost::noncopyable` Exposition only
implementation-defined
Constructs a `recursive_mutex` object.
*this
is in an unlocked state.
Destroys a `recursive_mutex` object.
*this
is in an unlocked state.
Danger: Destruction of a locked mutex is a serious programming error resulting in undefined behavior such as a program crash.

The `recursive_try_mutex` class is a model of the TryMutex concept.

The `recursive_try_mutex` class is a model of the TryMutex concept. It should be used to synchronize access to shared resources using Recursive locking mechanics.

For classes that model related mutex concepts, see `recursive_mutex` and `recursive_timed_mutex`.

For Unspecified locking mechanics, see `mutex`, `try_mutex`, and `timed_mutex`.

The `recursive_try_mutex` class supplies the following typedefs, which model the specified locking strategies:

# Supported Lock Types

Lock Name | Lock Concept
--- | ---
scoped_lock | ScopedLock
scoped_try_lock | ScopedTryLock

The `recursive_try_mutex` class uses a Recursive locking strategy, so attempts to recursively lock a `recursive_try_mutex` object succeed and an internal "lock count" is maintained. Attempts to unlock a `recursive_mutex` object by threads that don't own a lock on it result in undefined behavior.

Like all mutex models in &Boost.Thread;, `recursive_try_mutex` leaves the scheduling policy as Unspecified. Programmers should make no assumptions about the order in which waiting threads acquire a lock.

`boost::noncopyable` Exposition only
implementation-defined
implementation-defined
Constructs a `recursive_try_mutex` object.
*this
is in an unlocked state.
Destroys a `recursive_try_mutex` object.
*this
is in an unlocked state.
Danger: Destruction of a locked mutex is a serious programming error resulting in undefined behavior such as a program crash.

The `recursive_timed_mutex` class is a model of the TimedMutex concept.

The `recursive_timed_mutex` class is a model of the TimedMutex concept. It should be used to synchronize access to shared resources using Recursive locking mechanics.

For classes that model related mutex concepts, see `recursive_mutex` and `recursive_try_mutex`.

For Unspecified locking mechanics, see `mutex`, `try_mutex`, and `timed_mutex`.

The `recursive_timed_mutex` class supplies the following typedefs, which model the specified locking strategies:

# Supported Lock Types

Lock Name | Lock Concept
--- | ---
scoped_lock | ScopedLock
scoped_try_lock | ScopedTryLock
scoped_timed_lock | ScopedTimedLock

The `recursive_timed_mutex` class uses a Recursive locking strategy, so attempts to recursively lock a `recursive_timed_mutex` object succeed and an internal "lock count" is maintained. Attempts to unlock a `recursive_mutex` object by threads that don't own a lock on it result in undefined behavior.

Like all mutex models in &Boost.Thread;, `recursive_timed_mutex` leaves the scheduling policy as Unspecified. Programmers should make no assumptions about the order in which waiting threads acquire a lock.

`boost::noncopyable` Exposition only
implementation-defined
implementation-defined
implementation-defined
Constructs a `recursive_timed_mutex` object.
*this
is in an unlocked state.
Destroys a `recursive_timed_mutex` object.
*this
is in an unlocked state.
Danger: Destruction of a locked mutex is a serious programming error resulting in undefined behavior such as a program crash.