Namespaces
Variants

C++ named requirements: BasicLockable (since C++11)

From cppreference.net
C++ named requirements

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

Содержание

Требования

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

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

Не выбрасывает исключений.

Неразделяемые блокировки

Блокировка объекта называется неразделяемой блокировкой , если она получена путем вызова lock , try_lock , try_lock_for или try_lock_until функций-членов.

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

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

(C++11)
предоставляет базовое средство взаимного исключения
(class)
предоставляет средство взаимного исключения, которое может быть рекурсивно заблокировано тем же потоком
(class)
предоставляет средство взаимного исключения, которое может быть рекурсивно заблокировано
тем же потоком и реализует блокировку с таймаутом
(class)
предоставляет средство разделяемого взаимного исключения
(class)
предоставляет средство разделяемого взаимного исключения и реализует блокировку с таймаутом
(class)
предоставляет средство взаимного исключения, которое реализует блокировку с таймаутом
(class)

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