Spec-Zone.ru › C++

std::shared_timed_mutex::try_lock_shared_until

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

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

Если timeout_time уже наступил, эта функция действует как try_lock_shared().

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

Стандарт рекомендует использовать часы, связанные с timeout_time, и в этом случае могут учитываться корректировки часов. Поэтому длительность блокировки может быть больше или меньше timeout_time - Clock::now() на момент вызова — в зависимости от направления корректировки и от того, учитывает ли её реализация. Функция также может блокировать выполнение и после наступления timeout_time из-за задержек планирования процессов или конкуренции за ресурсы.

Как и try_lock_shared(), эта функция может завершиться неудачно без причины и вернуть false, даже если до наступления timeout_time мьютекс в какой-то момент не был заблокирован ни одним другим потоком.

Предшествующая операция unlock() над тем же мьютексом синхронизируется-с (как определено в std::memory_order) с этой операцией, если она возвращает true.

Если try_lock_shared_until вызывается потоком, который уже владеет mutex в любом режиме (совместном или исключительном), поведение не определено.

Параметры

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

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

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

Исключения

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

Пример

См. также

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

Spec-Zone.ru

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