Spec-Zone.ru › C++

std::unique_lock<Mutex>::try_lock_for

template< class Rep, class Period >
bool try_lock_for( const std::chrono::duration<Rep, Period>& timeout_duration );
(начиная с C++11)

Пытается заблокировать связанный мьютекс (то есть получить владение им). Блокирует выполнение, пока не истечёт указанный timeout_duration или не будет получена блокировка — в зависимости от того, что произойдёт раньше. При успешном получении блокировки возвращает true, в противном случае возвращает false. Фактически вызывает mutex()->try_lock_for(timeout_duration).

Из-за задержек при планировании или конкуренции за ресурсы эта функция может блокировать выполнение дольше, чем timeout_duration.

Стандарт рекомендует использовать для измерения продолжительности устойчивые часы. Если реализация использует системные часы, время ожидания также может зависеть от корректировок часов.

Выбрасывается std::system_error, если связанный мьютекс отсутствует или если этот std::unique_lock уже заблокировал мьютекс.

Параметры

timeout_duration - максимальное время блокировки

Возвращаемое значение

true, если владение мьютексом было успешно получено, и false в противном случае.

Исключения

  • Любые исключения, выбрасываемые mutex()->try_lock_for(timeout_duration).
  • Если связанный мьютекс отсутствует, std::system_error с кодом ошибки std::errc::operation_not_permitted.
  • Если мьютекс уже заблокирован, std::system_error с кодом ошибки std::errc::resource_deadlock_would_occur.

Пример

См. также

lock
блокирует связанный мьютекс (то есть получает владение им)
(открытая функция-член)
try_lock
пытается заблокировать связанный мьютекс (то есть получить владение им), не блокируя выполнение
(открытая функция-член)
try_lock_for
пытается заблокировать связанный мьютекс на указанный промежуток времени
(открытая функция-член std::shared_lock<Mutex>)
try_lock_until
пытается заблокировать связанный мьютекс TimedLockable (то есть получить владение им); возвращает управление, если мьютекс был недоступен до наступления указанного момента времени
(открытая функция-член)
unlock
разблокирует связанный мьютекс (то есть освобождает владение им)
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/unique_lock/try_lock_for

Spec-Zone.ru

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