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 | — | the type of the shared mutex to lock. The type must meet the SharedLockable requirements |
[править]Member types
Type | Definition |
mutex_type | Mutex |
[править]Методы
[править]Функции
(C++14) | специализация std::swap для shared_lock (шаблон функции) |
[править]Отчеты об ошибках
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 2981 | C++17 | redundant deduction guide from shared_lock<Mutex> was provided | removed |