public member function
Unlocks the recursive_mutex, releasing one level of ownership over it.
If the calling thread had a single level of ownership over the recursive_mutex, it is completely unlocked: If other threads are currently blocked attempting to lock this same recursive_mutex, one of them acquires ownership over it and continues its execution.
All lock and unlock operations on the recursive_mutex follow a single total order, with all visible effects synchronized between the lock operations and previous unlock operations on the same object.
If the recursive_mutex is not currently locked by the calling thread, it causes undefined behavior.
The recursive_mutex object is modified as an atomic operation (causes no data races).
If the recursive_mutex is currently locked by the calling thread, this function never throws exceptions (no-throw guarantee).
Otherwise, it causes undefined behavior.