C++ named requirements: SharedLockable (since C++14)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Требования 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 требованиям:
|
(C++17)
|
предоставляет механизм совместной взаимной блокировки
(класс) |
|
(C++14)
|
предоставляет механизм совместной взаимной блокировки и реализует блокировку с таймаутом
(класс) |