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

Функции-члены

(constructor)
создаёт shared_lock, при необходимости блокируя переданный мьютекс
(открытая функция-член)
(destructor)
разблокирует связанный мьютекс
(открытая функция-член)
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
(шаблон функции)

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

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам 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/cpp/thread/shared_lock

Spec-Zone.ru

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