std:: shared_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Shared locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
Определено в заголовочном файле
<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
, опционально блокируя предоставленный мьютекс
(public member function) |
|
|
разблокирует связанный мьютекс
(public member function) |
|
|
разблокирует мьютекс, если владеет им, и приобретает владение другим
(public member function) |
|
Раздельная блокировка |
|
|
блокирует связанный мьютекс
(public member function) |
|
|
пытается заблокировать связанный мьютекс
(public member function) |
|
|
пытается заблокировать связанный мьютекс на указанную длительность
(public member function) |
|
|
пытается заблокировать связанный мьютекс до указанного момента времени
(public member function) |
|
|
разблокирует связанный мьютекс
(public member function) |
|
Модификаторы |
|
обменивает члены данных с другим
shared_lock
(public member function) |
|
|
отсоединяет мьютекс без разблокировки
(public member function) |
|
Наблюдатели |
|
|
возвращает указатель на связанный мьютекс
(public member function) |
|
|
проверяет, владеет ли блокировка своим связанным мьютексом
(public member function) |
|
|
проверяет, владеет ли блокировка своим связанным мьютексом
(public member function) |
|
Функции, не являющиеся членами класса
|
(C++14)
|
специализирует алгоритм
std::swap
(шаблон функции) |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2981 | C++17 |
redundant deduction guide from
shared_lock<Mutex>
was provided
|
removed |