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 |
[править] Методы
Шаблон:cpp/thread/shared lock/dsc constructorШаблон:cpp/thread/shared lock/dsc destructorШаблон:cpp/thread/shared lock/dsc operator=Шаблон:cpp/thread/shared lock/dsc lockШаблон:cpp/thread/shared lock/dsc try lockШаблон:cpp/thread/shared lock/dsc try lock forШаблон:cpp/thread/shared lock/dsc try lock untilШаблон:cpp/thread/shared lock/dsc unlockШаблон:cpp/thread/shared lock/dsc swapШаблон:cpp/thread/shared lock/dsc releaseШаблон:cpp/thread/shared lock/dsc mutexШаблон:cpp/thread/shared lock/dsc owns lockШаблон:cpp/thread/shared lock/dsc operator bool | |
Modifiers | |
Observers |
[править] Функции
(C++14) |
специализация std::swap для shared_lock (шаблон функции) |
[править] Отчеты об ошибках
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 2981 | C++17 | redundant deduction guide from shared_lock<Mutex> was provided
|
removed |