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 ) ;
(desde C++14)

Intenta bloquear el mutex en modo compartido. Se bloquea hasta que se alcanza el timeout_time especificado o se adquiere el bloqueo, lo que ocurra primero. Si la adquisición del bloqueo es exitosa, retorna true ; de lo contrario, retorna false .

Si timeout_time ya ha pasado, esta función se comporta como try_lock_shared() .

Clock debe cumplir con los requisitos de Clock . El programa está mal formado si std:: chrono :: is_clock_v < Clock > es false . (desde C++20)

La norma recomienda que se utilice el reloj vinculado a timeout_time , en cuyo caso se pueden tener en cuenta los ajustes del reloj. Por lo tanto, la duración del bloqueo podría ser mayor o menor que timeout_time - Clock :: now ( ) en el momento de la llamada, dependiendo de la dirección del ajuste y de si es respetado por la implementación. La función también puede bloquear hasta después de que se haya alcanzado timeout_time debido a demoras en la planificación de procesos o contención de recursos.

Al igual que con try_lock_shared() , se permite que esta función falle espuriamente y devuelva false incluso si el mutex no estaba bloqueado por ningún otro hilo en algún momento anterior a timeout_time .

Una operación previa unlock() en el mismo mutex synchronizes-with (como se define en std::memory_order ) esta operación si retorna true .

Si try_lock_shared_until es llamado por un hilo que ya posee el mutex en cualquier modo (compartido o exclusivo), el comportamiento es indefinido.

Contenidos

Parámetros

timeout_time - punto de tiempo máximo hasta el cual bloquear

Valor de retorno

true si la propiedad del bloqueo compartido se adquirió exitosamente, de lo contrario false .

Excepciones

Cualquier excepción lanzada por clock, time_point o duration durante la ejecución (los clocks, time points y durations proporcionados por la biblioteca estándar nunca lanzan excepciones).

Ejemplo

Véase también

intenta bloquear el mutex, retorna si el mutex ha estado
no disponible hasta que se alcanza el punto de tiempo especificado
(función miembro pública)
intenta bloquear el mutex para propiedad compartida, retorna si el mutex no está disponible
(función miembro pública)
intenta bloquear el mutex para propiedad compartida, retorna si el mutex ha estado
no disponible durante la duración del tiempo de espera especificado
(función miembro pública)