Namespaces
Variants
Views
Actions

std::shared_mutex

From cppreference.com
< cpp‎ | thread
Revision as of 12:57, 18 May 2013 by P12 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
 
 
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
(C++11)
shared_timed_mutex
(C++14)
Generic lock management
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Safe Reclamation
(C++26)
Hazard Pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11)(deprecated in C++20)
(C++11)(deprecated in C++20)
Memory ordering
Free functions for atomic operations
Free functions for atomic flags
 
 
Defined in header <mutex>
class shared_mutex;
(since C++14)

The shared_mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. Differently from other mutex types, there are 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.

In a manner similar to timed_mutex, shared_mutex provides the ability to attempt to claim ownership of a shared_mutex with a timeout via the try_lock_for(), try_lock_until(), try_lock_shared_for(), try_lock_shared_until() methods.

The shared_mutex class is non-copyable.

Member functions

Template:cpp/thread/mutex/dcl list constructorTemplate:cpp/thread/mutex/dcl list lockTemplate:cpp/thread/mutex/dcl list try lockTemplate:cpp/thread/mutex/dcl list try lock forTemplate:cpp/thread/mutex/dcl list try lock untilTemplate:cpp/thread/mutex/dcl list unlockTemplate:cpp/thread/mutex/dcl list lock sharedTemplate:cpp/thread/mutex/dcl list try lock sharedTemplate:cpp/thread/mutex/dcl list try lock shared forTemplate:cpp/thread/mutex/dcl list try lock shared untilTemplate:cpp/thread/mutex/dcl list unlock shared
Exclusive locking
Shared locking