Именованные требования C++: SharedLockable (начиная с C++14)
Требования SharedLockable описывают минимальные характеристики типов, предоставляющих семантику блокировки с совместным доступом для агентов выполнения (т. е. потоков).
Требования
Чтобы тип L соответствовал требованиям SharedLockable, для объекта m типа L должны выполняться следующие условия:
| Выражение | Предварительные условия | Эффекты | Возвращаемое значение |
|---|---|---|---|
m.lock_shared() | Блокирует выполнение до тех пор, пока для текущего агента выполнения (потока, процесса, задачи) не станет возможным получить блокировку. Если выбрасывается исключение, блокировка не получается. | ||
m.try_lock_shared() | Пытается получить блокировку для текущего агента выполнения (потока, процесса, задачи), не блокируя выполнение. Если выбрасывается исключение, блокировка не получается. |
true, если блокировка получена, в противном случае — false |
|
m.unlock_shared() | Текущий агент выполнения удерживает блокировку с совместным доступом для m. | Освобождает блокировку с совместным доступом, удерживаемую агентом выполнения. Не выбрасывает исключений. |
Блокировки с совместным доступом
Блокировка объекта считается блокировкой с совместным доступом, если она получена вызовом функции-члена lock_shared, try_lock_shared, try_lock_shared_for или try_lock_shared_until.
Стандартная библиотека
Следующие типы стандартной библиотеки соответствуют требованиям SharedLockable:
|
(C++17) | предоставляет средство взаимного исключения с совместным доступом (класс) |
|
(C++14) | предоставляет средство взаимного исключения с совместным доступом и реализует блокировку с тайм-аутом (класс) |
См. также
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/SharedLockable