Spec-Zone.ru › C++

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 - тип общего мьютекса для блокировки. Тип должен удовлетворять требованиям SharedLockable

Типы членов

Тип Определение
mutex_type Mutex

Члены-функции

(конструктор)
строит shared_lock, необязательно блокируя указанный мьютекс
(публичная функция-член)
(деструктор)
разблокирует связанный мьютекс
(публичная функция-член)
operator=
разблокирует мьютекс, если он владел им, и получает владение другим
(публичная функция-член)
Блокировка с совместным доступом
lock
блокирует связанный мьютекс
(публичная функция-член)
try_lock
пытается заблокировать связанный мьютекс
(публичная функция-член)
try_lock_for
пытается заблокировать связанный мьютекс в течение заданного промежутка времени
(публичная функция-член)
try_lock_until
пытается заблокировать связанный мьютекс до заданного момента времени
(публичная функция-член)
unlock
разблокирует связанный мьютекс
(публичная функция-член)
Модификаторы
swap
меняет местами данные членами с другим shared_lock
(публичная функция-член)
release
отсоединяет мьютекс без разблокировки
(публичная функция-член)
Наблюдатели
mutex
возвращает указатель на связанный мьютекс
(публичная функция-член)
owns_lock
проверяет, владеет ли блокировка своим связанным мьютексом
(публичная функция-член)
operator bool
проверяет, владеет ли блокировка своим связанным мьютексом
(публичная функция-член)

Функции вне класса

std::swap(std::shared_lock)
(C++14)
специализация std::swap для shared_lock
(шаблон функции)

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применимо к Поведение при публикации Правильное поведение
LWG 2981 C++17 была предоставлена избыточная руководящая инструкция по выводу из shared_lock<Mutex> удалено

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/shared_lock

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API