std::shared_lock
Определено в заголовке <shared_mutex> | ||
|---|---|---|
template< class Mutex > class shared_lock; | (с C++14) |
Класс shared_lock — это оболочка общего взаимного исключения, позволяющая отложить блокировку, выполнить блокировку с таймаутом и передать владение блокировкой. Блокировка shared_lock блокирует связанный общий мьютекс в режиме совместного доступа (чтобы заблокировать его в режиме эксклюзивного доступа, можно использовать std::unique_lock).
Класс shared_lock перемещаемый, но не копируемый — он удовлетворяет требованиям MoveConstructible и MoveAssignable, но не CopyConstructible или CopyAssignable.
shared_lock удовлетворяет требованиям Lockable. Если Mutex удовлетворяет требованиям SharedTimedLockable, то shared_lock также удовлетворяет требованиям TimedLockable.
Для ожидания в общем мьютексе в режиме совместного владения можно использовать std::condition_variable_any (std::condition_variable требует std::unique_lock и поэтому может ожидать только в режиме уникального владения).
Параметры шаблона
| Mutex | - | тип общего мьютекса для блокировки. Тип должен удовлетворять требованиям SharedLockable |
Типы членов
| Тип | Определение |
|---|---|
mutex_type | Mutex |
Члены-функции
строит shared_lock, необязательно блокируя указанный мьютекс (публичная функция-член) |
|
| разблокирует связанный мьютекс (публичная функция-член) |
|
| разблокирует мьютекс, если он владел им, и получает владение другим (публичная функция-член) |
|
Блокировка с совместным доступом |
|
| блокирует связанный мьютекс (публичная функция-член) |
|
| пытается заблокировать связанный мьютекс (публичная функция-член) |
|
| пытается заблокировать связанный мьютекс в течение заданного промежутка времени (публичная функция-член) |
|
| пытается заблокировать связанный мьютекс до заданного момента времени (публичная функция-член) |
|
| разблокирует связанный мьютекс (публичная функция-член) |
|
Модификаторы |
|
меняет местами данные членами с другим shared_lock (публичная функция-член) |
|
| отсоединяет мьютекс без разблокировки (публичная функция-член) |
|
Наблюдатели |
|
| возвращает указатель на связанный мьютекс (публичная функция-член) |
|
| проверяет, владеет ли блокировка своим связанным мьютексом (публичная функция-член) |
|
| проверяет, владеет ли блокировка своим связанным мьютексом (публичная функция-член) |
|
Функции вне класса
|
(C++14) | специализация std::swap для shared_lock (шаблон функции) |
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение при публикации | Правильное поведение |
|---|---|---|---|
| LWG 2981 | C++17 | была предоставлена избыточная руководящая инструкция по выводу из shared_lock<Mutex> | удалено |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/shared_lock