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 boolModifiers | |
Observers |
Функции
(C++14) |
специализация std::swap для shared_lock (шаблон функции) |
Отчеты об ошибках
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 2981 | C++17 | redundant deduction guide from shared_lock<Mutex> was provided
|
removed |