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.
Исключения
Любые исключения, сгенерированные часами, time_point или duration во время выполнения (часы, временные точки и длительности, предоставляемые стандартной библиотекой, никогда не генерируют исключения).
Пример
См. также
| пытается заблокировать мьютекс для совместного владения, возвращает, если мьютекс недоступен (публичный член-функция) |
|
| пытается заблокировать мьютекс для совместного владения, возвращает, если мьютекс недоступен до тех пор, пока не будет достигнута указанная временная точка (публичный член-функция) |
|
| пытается заблокировать мьютекс, возвращает, если мьютекс недоступен в течение указанного времени ожидания (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/shared_timed_mutex/try_lock_shared_for