Namespaces
Variants

std::shared_timed_mutex:: try_lock_shared_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_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 в любом режиме (shared или exclusive), поведение не определено.

Содержание

Параметры

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

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

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

Исключения

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

Пример

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

пытается заблокировать мьютекс, возвращает управление, если мьютекс был
недоступен до достижения указанной точки времени
(public member function)
пытается заблокировать мьютекс для разделяемого владения, возвращает управление, если мьютекс недоступен
(public member function)
пытается заблокировать мьютекс для разделяемого владения, возвращает управление, если мьютекс был
недоступен в течение указанной продолжительности таймаута
(public member function)