Spec-Zone.ru › C++

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 во время выполнения (часы, временные точки и длительности, предоставляемые стандартной библиотекой, никогда не генерируют исключения).

Пример

См. также

try_lock_shared
пытается заблокировать мьютекс для совместного владения, возвращает, если мьютекс недоступен
(публичный член-функция)
try_lock_shared_until
пытается заблокировать мьютекс для совместного владения, возвращает, если мьютекс недоступен до тех пор, пока не будет достигнута указанная временная точка
(публичный член-функция)
try_lock_for
пытается заблокировать мьютекс, возвращает, если мьютекс недоступен в течение указанного времени ожидания
(публичный член-функция)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API