Namespaces
Variants

std:: shared_lock

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
(C++11)
(C++11)
shared_lock
(C++14)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Определено в заголовочном файле <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)

Функции, не являющиеся членами класса

специализирует алгоритм 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