Concurrency support library 
 
| 
 (C++11)(deprecated in C++20)  (C++11)(deprecated in C++20)  (C++11)(deprecated in C++26)  (C++11)(C++11)(C++11)(C++11) |     
std::shared_lock
 Member functions
 Shared locking
 Modifiers
 Observers
 Non-member functions
   
 template< class Mutex >
class shared_lock;
 
 (since C++14) 
 
The class shared_lock is a general-purpose shared mutex ownership wrapper allowing deferred locking, timed locking and transfer of lock ownership. Locking a shared_lock locks the associated shared mutex in shared mode (to lock it in exclusive mode, std::unique_lock  can be used).
The shared_lock class is movable, but not copyable – it meets the requirements of MoveConstructible and MoveAssignable but not of CopyConstructible or CopyAssignable.
shared_lock meets the Lockable requirements. If Mutex meets the SharedTimedLockable requirements, shared_lock also meets TimedLockable requirements.
In order to wait in a shared mutex in shared ownership mode, std::condition_variable_any  can be used (std::condition_variable  requires std::unique_lock  and so can only wait in unique ownership mode).
[edit] Template parameters
 Mutex
 -
 the type of the shared mutex to lock. The type must meet the 
SharedLockable requirements
[edit] Member types
 Type
 Definition
 mutex_type
 Mutex
[edit] Member functions
 
 constructs a 
shared_lock, optionally locking the supplied mutex  
(public member function) [edit] 
 
 
 unlocks the associated mutex  
(public member function) [edit] 
 
 
 unlocks the mutex, if owned, and acquires ownership of another  
(public member function) [edit] 
 
 
  Shared locking 
 
 locks the associated mutex  
(public member function) [edit] 
 
 
 tries to lock the associated mutex  
(public member function) [edit] 
 
 
 tries to lock the associated mutex, for the specified duration  
(public member function) [edit] 
 
 
 tries to lock the associated mutex, until a specified time point  
(public member function) [edit] 
 
 
 unlocks the associated mutex  
(public member function) [edit] 
 
 
  Modifiers 
 
 swaps the data members with another 
shared_lock  (public member function) [edit] 
 
 
 disassociates the mutex without unlocking  
(public member function) [edit] 
 
 
  Observers 
 
 returns a pointer to the associated mutex  
(public member function) [edit] 
 
 
 tests whether the lock owns its associated mutex  
(public member function) [edit] 
 
 
 tests whether the lock owns its associated mutex  
(public member function) [edit] 
 
[edit] Non-member functions
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
| LWG 2981 | C++17 | redundant deduction guide from shared_lock<Mutex>was provided | removed |