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 (шаблон функции) |
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам 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/cpp/thread/shared_lock