Namespaces
Variants

std::shared_timed_mutex:: try_lock_shared_for

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 Rep, class Period >
bool try_lock_shared_for ( const std:: chrono :: duration < Rep,Period > & timeout_duration ) ;
(desde C++14)

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

Si timeout_duration es menor o igual a timeout_duration. zero ( ) , la función se comporta como try_lock_shared() .

Esta función puede bloquearse por más tiempo que timeout_duration debido a demoras de planificación o contención de recursos.

El estándar recomienda que se utilice un reloj constante para medir la duración. Si una implementación utiliza un reloj del sistema en su lugar, el tiempo de espera también puede ser sensible a los ajustes del reloj.

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

La operación unlock() previa sobre el mismo mutex sincroniza-con (como se define en std::memory_order ) esta operación si retorna true .

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

Contenidos

Parámetros

timeout_duration - duración máxima para bloquear

Valor de retorno

true si el bloqueo 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 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 hasta que se alcanza el punto de tiempo especificado
(función miembro pública)
intenta bloquear el mutex, retorna si el mutex ha estado
no disponible durante la duración del tiempo de espera especificado
(función miembro pública)