std::shared_mutex

From cppreference.com
< cpp‎ | thread
 
 
Thread support library
Threads
(C++11)
this_thread namespace
(C++11)
(C++11)
(C++11)
Mutual exclusion
(C++11)
shared_mutex
(C++17)
Generic lock management
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Condition variables
(C++11)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
 
 
Defined in header <shared_mutex>
class shared_mutex;
(since C++17)

The shared_mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. In contrast to other mutex types which facilitate exclusive access, a shared_mutex has two levels of access:

  • shared - several threads can share ownership of the same mutex.
  • exclusive - only one thread can own the mutex.

Shared mutexes are usually used in situations when multiple readers can access the same resource at the same time without causing data races, but only one writer can do so.

The shared_mutex class satisfies all requirements of SharedMutex and StandardLayoutType.

Member types

Member type Definition
native_handle_type(optional) implementation-defined

Member functions

constructs the mutex
(public member function)
destroys the mutex
(public member function)
operator=
[deleted]
not copy-assignable
(public member function)
Exclusive locking
locks the mutex, blocks if the mutex is not available
(public member function)
tries to lock the mutex, returns if the mutex is not available
(public member function)
unlocks the mutex
(public member function)
Shared locking
locks the mutex for shared ownership, blocks if the mutex is not available
(public member function)
tries to lock the mutex for shared ownership, returns if the mutex is not available
(public member function)
unlocks the mutex (shared ownership)
(public member function)
Native handle
returns the underlying implementation-defined thread handle
(public member function)