C++ named requirements: BasicLockable (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Требования BasicLockable описывают минимальные характеристики типов, которые предоставляют эксклюзивную блокирующую семантику для агентов выполнения (т.е. потоков).
Содержание |
Требования
Чтобы тип
L
был
BasicLockable
, для объекта
m
типа
L
должны выполняться следующие условия:
| Выражение | Предусловия | Эффекты |
|---|---|---|
| m. lock ( ) | Блокирует до тех пор, пока не будет получена блокировка для текущего агента выполнения (поток, процесс, задача). Если выбрасывается исключение, блокировка не приобретается. | |
| m. unlock ( ) |
Текущий агент выполнения удерживает неразделяемую блокировку на
m
.
|
Освобождает неразделяемую блокировку, удерживаемую агентом выполнения.
Не выбрасывает исключений. |
Неразделяемые блокировки
Блокировка объекта называется
неразделяемой блокировкой
, если она получена путем вызова
lock
,
try_lock
,
try_lock_for
или
try_lock_until
функций-членов.
Стандартная библиотека
Следующие стандартные типы библиотеки удовлетворяют BasicLockable требованиям:
|
(C++11)
|
предоставляет базовое средство взаимного исключения
(class) |
|
(C++11)
|
предоставляет средство взаимного исключения, которое может быть рекурсивно заблокировано тем же потоком
(class) |
|
(C++11)
|
предоставляет средство взаимного исключения, которое может быть рекурсивно заблокировано
тем же потоком и реализует блокировку с таймаутом (class) |
|
(C++17)
|
предоставляет средство разделяемого взаимного исключения
(class) |
|
(C++14)
|
предоставляет средство разделяемого взаимного исключения и реализует блокировку с таймаутом
(class) |
|
(C++11)
|
предоставляет средство взаимного исключения, которое реализует блокировку с таймаутом
(class) |