void lock_shared(); | (since C++17) |
Acquires shared ownership of the mutex. If another thread is holding the mutex in exclusive ownership, a call to lock_shared
will block execution until shared ownership can be acquired.
If lock_shared
is called by a thread that already owns the mutex
in any mode (exclusive or shared), the behavior is undefined.
If more than the implementation-defined maximum number of shared owners already locked the mutex in shared mode, lock_shared
blocks execution until the number of shared owners is reduced. The maximum number of owners is guaranteed to be at least 10000.
A prior unlock()
operation on the same mutex synchronizes-with (as defined in std::memory_order
) this operation.
(none).
(none).
Throws std::system_error
when errors occur, including errors from the underlying operating system that would prevent lock
from meeting its specifications. The mutex is not locked in the case of any exception being thrown.
lock_shared()
is usually not called directly: std::shared_lock
is used to manage shared locking.
locks the mutex, 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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/shared_mutex/lock_shared