Пространства имён
Варианты
Действия

std::shared_lock

Материал из cppreference.com
< cpp‎ | thread
 
 
Библиотека поддержки конкуренции
Ветви
(C++11)
(C++20)
(C++20)
Пространство имён this_thread
(C++11)
(C++11)
(C++11)
Атомарные типы
(C++11)
(C++20)
Инициализация атомарных типов
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
Функции освобождения для атомарных операций
Функции освобождения для атомарных флагов
Упорядочивание памяти
Взаимное исключение
(C++11)
Общее управление блокировкой
(C++11)
shared_lock
(C++14)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Условные переменные
(C++11)
Семафоры
Защёлки и барьеры
(C++20)
(C++20)
Фьючерсы
(C++11)
(C++11)
(C++11)
(C++11)
 
 
Определено в заголовочном файле <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 bool
Shared locking
Modifiers
Observers

[править] Функции

специализация std::swap для shared_lock
(шаблон функции) [править]

[править] Отчеты об ошибках

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 2981 C++17 redundant deduction guide from shared_lock<Mutex> was provided removed