std::shared_timed_mutex::try_lock_shared_for
template< class Rep, class Period > bool try_lock_shared_for( const std::chrono::duration<Rep,Period>& timeout_duration ); | (начиная с C++14) |
Пытается заблокировать мьютекс в режиме совместного доступа. Блокирует выполнение до истечения указанного timeout_duration или получения блокировки совместного доступа — в зависимости от того, что произойдёт раньше. Если блокировка успешно получена, возвращает true, иначе возвращает false.
Если timeout_duration меньше или равен timeout_duration.zero(), функция ведёт себя как try_lock_shared().
Из-за задержек планирования или конкуренции за ресурсы эта функция может блокировать выполнение дольше, чем timeout_duration.
Стандарт рекомендует использовать монотонные часы для измерения длительности. Если реализация использует вместо них системные часы, на время ожидания также могут влиять корректировки часов.
Как и try_lock_shared(), эта функция может без видимой причины завершиться неудачей и вернуть false, даже если в какой-то момент в течение timeout_duration ни один другой поток не блокировал мьютекс.
Предшествующая операция unlock() над тем же мьютексом синхронизируется с (как определено в std::memory_order) этой операцией, если она возвращает true.
Если try_lock_shared_for вызывается потоком, который уже владеет mutex в любом режиме (совместном или исключительном), поведение не определено.
Параметры
| timeout_duration | - | максимальная продолжительность блокировки |
Возвращаемое значение
true, если блокировка успешно получена, иначе false.
Исключения
Любое исключение, выброшенное часами, точкой времени или длительностью во время выполнения функции (часы, точки времени и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключений).
Пример
См. также
| пытается получить блокировку мьютекса для совместного владения и возвращает управление, если мьютекс недоступен (открытая функция-член) |
|
| пытается получить блокировку мьютекса для совместного владения и возвращает управление, если мьютекс недоступен до наступления указанного момента времени (открытая функция-член) |
|
| пытается заблокировать мьютекс и возвращает управление, если мьютекс недоступен в течение указанного времени ожидания (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/shared_timed_mutex/try_lock_shared_for