Namespaces
Variants

C++ named requirements: SharedLockable (since C++14)

From cppreference.net
C++ named requirements

Требования SharedLockable описывают минимальные характеристики типов, которые предоставляют общую блокирующую семантику для исполнительных агентов (т.е. потоков).

Содержание

Требования

Для типа L чтобы быть SharedLockable , должны выполняться следующие условия для объекта m типа L :

Выражение Предусловия Эффекты Возвращаемое значение
m. lock_shared ( ) Блокирует выполнение до тех пор, пока не будет получена блокировка для текущего агента выполнения (поток, процесс, задача). Если возникает исключение, блокировка не получена.
m. try_lock_shared ( ) Пытается получить блокировку для текущего агента выполнения (поток, процесс, задача) без блокировки. Если возникает исключение, блокировка не получена. true если блокировка была получена, false в противном случае
m. unlock_shared ( ) Текущий агент выполнения удерживает разделяемую блокировку на m . Освобождает разделяемую блокировку, удерживаемую агентом выполнения.

Не генерирует исключений.

Общие блокировки

Блокировка объекта называется shared lock , если она получена вызовом функции-члена lock_shared , try_lock_shared , try_lock_shared_for или try_lock_shared_until .

Стандартная библиотека

Следующие стандартные библиотечные типы удовлетворяют SharedLockable требованиям:

предоставляет механизм совместной взаимной блокировки
(класс)
предоставляет механизм совместной взаимной блокировки и реализует блокировку с таймаутом
(класс)

Смотрите также