std::shared_timed_mutex:: try_lock_shared_for
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Exclusive locking | ||||
| Shared locking | ||||
|
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
в любом режиме (shared или exclusive), поведение не определено.
Содержание |
Параметры
| timeout_duration | - | максимальная длительность блокировки |
Возвращаемое значение
true если блокировка была успешно получена, в противном случае false .
Исключения
Любое исключение, выброшенное clock, time_point или duration во время выполнения (часы, временные точки и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключений).
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
пытается заблокировать мьютекс для совместного владения, возвращает управление, если мьютекс недоступен
(публичная функция-член) |
|
|
пытается заблокировать мьютекс для совместного владения, возвращает управление, если мьютекс был
недоступен до достижения указанной точки времени (публичная функция-член) |
|
|
пытается заблокировать мьютекс, возвращает управление, если мьютекс был
недоступен в течение указанной продолжительности таймаута (публичная функция-член) |