Namespaces
Variants

std::shared_timed_mutex:: try_lock_until

From cppreference.net

Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
template < class Clock, class Duration >
bool try_lock_until ( const std:: chrono :: time_point < Clock, Duration > & timeout_time ) ;
(начиная с C++14)

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

Если timeout_time уже истек, данная функция ведет себя как try_lock() .

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

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

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

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

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

Содержание

Параметры

timeout_time - максимальная точка времени до которой будет блокировка

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

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

Исключения

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

Пример

Смотрите также

блокирует мьютекс, ожидает если мьютекс недоступен
(публичная функция-член)
пытается заблокировать мьютекс, возвращает управление если мьютекс недоступен
(публичная функция-член)
пытается заблокировать мьютекс, возвращает управление если мьютекс был
недоступен в течение указанного времени ожидания
(публичная функция-член)
разблокирует мьютекс
(публичная функция-член)
Документация C для mtx_timedlock