std::shared_timed_mutex:: try_lock_shared_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Exclusive locking | ||||
| Shared locking | ||||
|
shared_timed_mutex::try_lock_shared_until
|
||||
|
template
<
class
Clock,
class
Duration
>
bool try_lock_shared_until ( const std:: chrono :: time_point < Clock,Duration > & timeout_time ) ; |
(начиная с C++14) | |
Пытается заблокировать мьютекс в режиме разделяемого доступа. Блокируется до достижения указанного timeout_time или до получения блокировки, в зависимости от того, что наступит раньше. При успешном получении блокировки возвращает true , в противном случае возвращает false .
Если timeout_time уже истек, эта функция ведет себя как try_lock_shared() .
Clock
должен удовлетворять требованиям
Clock
.
Программа является некорректной, если
std::
chrono
::
is_clock_v
<
Clock
>
равно
false
.
(начиная с C++20)
Стандарт рекомендует использовать часы, связанные с timeout_time , в этом случае могут учитываться корректировки часов. Таким образом, продолжительность блокировки может быть больше или меньше, чем timeout_time - Clock :: now ( ) на момент вызова, в зависимости от направления корректировки и того, учитывается ли она реализацией. Функция также может блокировать до тех пор, пока не будет достигнут timeout_time из-за задержек планирования процессов или конкуренции за ресурсы.
Как и в случае с try_lock_shared() , этой функции разрешено ложно завершаться неудачей и возвращать false даже если мьютекс не был заблокирован каким-либо другим потоком в некоторый момент до timeout_time .
Предыдущая операция unlock() на том же мьютексе синхронизируется-с (как определено в std::memory_order ) этой операцией, если она возвращает true .
Если
try_lock_shared_until
вызывается потоком, который уже владеет
mutex
в любом режиме (shared или exclusive), поведение не определено.
Содержание |
Параметры
| timeout_time | - | максимальная точка времени до которой будет блокировка |
Возвращаемое значение
true если владение разделяемой блокировкой было успешно получено, в противном случае false .
Исключения
Любое исключение, выброшенное clock, time_point или duration во время выполнения (часы, временные точки и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключений).
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
пытается заблокировать мьютекс, возвращает управление, если мьютекс был
недоступен до достижения указанной точки времени (public member function) |
|
|
пытается заблокировать мьютекс для разделяемого владения, возвращает управление, если мьютекс недоступен
(public member function) |
|
|
пытается заблокировать мьютекс для разделяемого владения, возвращает управление, если мьютекс был
недоступен в течение указанной продолжительности таймаута (public member function) |