Spec-Zone.ru › C++

std::unique_lock<Mutex>::try_lock_until

template< class Clock, class Duration >
bool try_lock_until( const std::chrono::time_point<Clock, Duration>& timeout_time );
(начиная с C++11)

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

Фактически вызывает mutex()->try_lock_until(timeout_time).

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

Clock должен соответствовать требованиям Clock. Программа некорректна, если std::chrono::is_clock_v<Clock> является false.(начиная с C++20)

Параметры

timeout_time - предельный момент времени, до которого поток будет заблокирован

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

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

Исключения

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

Пример

См. также

lock
блокирует связанный мьютекс (то есть получает право владения им)
(открытая функция-член)
try_lock
пытается заблокировать связанный мьютекс (то есть получить право владения им), не блокируя поток
(открытая функция-член)
try_lock_for
пытается заблокировать связанный мьютекс 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_until

Spec-Zone.ru

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