Именованные требования C++: TimedLockable (начиная с C++11)
Требования TimedLockable описывают характеристики типов, которые предоставляют семантику блокировки с тайм-аутом и эксклюзивным доступом для агентов выполнения (потоков, процессов, задач).
Требования
Чтобы тип L удовлетворял требованиям TimedLockable, при заданных
-
rel_time— значении специализацииstd::chrono::duration, а также -
abs_time— значении специализацииstd::chrono::time_point,
для объекта m типа L должны выполняться следующие условия:
| Выражение | Эффект | Возвращаемое значение |
|---|---|---|
m.try_lock_for(rel_time) | Блокирует выполнение на заданный промежуток времени rel_time или до тех пор, пока не будет получена блокировка для m. |
true, если блокировка получена, и false в противном случае. |
m.try_lock_until(abs_time) | Блокирует выполнение до наступления заданного момента времени abs_time или до тех пор, пока не будет получена блокировка для m. |
true, если блокировка получена, и false в противном случае. |
Примечания
Функции-члены try_lock_for и try_lock_until при успешном выполнении получают эксклюзивную блокировку m.
Стандартная библиотека
Следующие типы стандартной библиотеки удовлетворяют требованиям TimedLockable:
|
(C++11) | предоставляет средство взаимного исключения, реализующее блокировку с тайм-аутом (класс) |
|
(C++11) | предоставляет средство взаимного исключения, которое может рекурсивно блокироваться одним и тем же потоком и реализует блокировку с тайм-аутом (класс) |
|
(C++14) | предоставляет средство совместного взаимного исключения и реализует блокировку с тайм-аутом (класс) |
См. также
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/TimedLockable