##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::recursive_mutex

From cppreference.com
< cpp‎ | thread

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 requiremenets of `Mutex` and `StandardLayoutType`.

### [edit] Member types

Member type | Definition
`native_handle_type` | implementation-defined

### [edit] Member functions

(constructor) | constructs the mutex (public member function) [edit]
(destructor) | destroys the mutex (public member function) [edit]
operator= [deleted] | not copy-assignable (public member function) [edit]
##### Locking
lock | locks the mutex, blocks if the mutex is not available (public member function) [edit]
try_lock | tries to lock the mutex, returns if the mutex is not available (public member function) [edit]
unlock | unlocks the mutex (public member function) [edit]
##### Native handle
native_handle | returns the underlying implementation-defined thread handle (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/thread/recursive_mutex&oldid=67038"