##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::shared_mutex::lock_shared

From cppreference.com
< cpp‎ | thread‎ | shared mutex

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.

Prior unlock() operation on the same mutex synchronizes-with (as defined in std::memory_order) this operation.

### [edit] Parameters

(none)

### [edit] Return value

(none)

### [edit] Exceptions

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.

### [edit] Notes

`lock_shared()` is usually not called directly: std::shared_lock is used to manage shared locking.

### [edit] Example

| This section is incomplete Reason: no example

### [edit] See also

lock | locks the mutex, blocks if the mutex is not available (public member function) [edit]
try_lock_shared | tries to lock the mutex for shared ownership, returns if the mutex is not available (public member function) [edit]
unlock_shared | unlocks the mutex (shared ownership) (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/thread/shared_mutex/lock_shared&oldid=78665"
Category:

- Todo no example