Scroll to navigation

std::shared_lock(3) C++ Standard Libary std::shared_lock(3)

NAME

std::shared_lock - std::shared_lock

Synopsis


Defined in header <shared_mutex>
template< class Mutex > (since C++14)
class shared_lock;


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)

Template parameters


Mutex - the type of the shared mutex to lock. The type must meet the SharedLockable
requirements

Member types


Type Definition
mutex_type Mutex

Member functions


constructor constructs a shared_lock, optionally locking the supplied mutex
(public member function)
destructor unlocks the associated mutex
(public member function)
operator= unlocks the mutex, if owned, and acquires ownership of another
(public member function)

Shared locking


lock locks the associated mutex
(public member function)
try_lock tries to lock the associated mutex
(public member function)
try_lock_for tries to lock the associated mutex, for the specified duration
(public member function)
try_lock_until tries to lock the associated mutex, until a specified time point
(public member function)
unlock unlocks the associated mutex
(public member function)

Modifiers


swap swaps the data members with another shared_lock
(public member function)
release disassociates the mutex without unlocking
(public member function)

Observers


mutex returns a pointer to the associated mutex
(public member function)
owns_lock tests whether the lock owns its associated mutex
(public member function)
operator bool tests whether the lock owns its associated mutex
(public member function)

Non-member functions


std::swap(std::shared_lock) specialization of std::swap for shared_lock
(C++14) (function template)


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 removed
shared_lock<Mutex> was provided

2022.07.31 http://cppreference.com