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.

Исключения

Любое исключение, выброшенное часами, точкой времени или длительностью во время выполнения функции (часы, точки времени и длительности, предоставляемые стандартной библиотекой, никогда не выбрасывают исключений).

Пример

См. также

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/cpp/thread/shared_timed_mutex/try_lock_shared_for

Spec-Zone.ru

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