Namespaces
Variants

std::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 ) ;
(desde C++11)

Intenta bloquear el mutex. Se bloquea hasta que se alcanza el timeout_time especificado (tiempo de espera) o se adquiere el bloqueo (posee el mutex), lo que ocurra primero. Si la adquisición del bloqueo es exitosa retorna true , en caso contrario retorna false .

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

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 bloquearse hasta después de que se haya alcanzado timeout_time debido a la planificación de procesos o a retrasos por contención de recursos.

Al igual que con try_lock() , 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 .

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_until es llamado por un hilo que ya posee el mutex, el comportamiento es indefinido.

Contenidos

Parámetros

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

Valor de retorno

true si el bloqueo fue adquirido exitosamente, de lo contrario false .

Excepciones

Cualquier excepción lanzada por timeout_time (los relojes, puntos de tiempo y duraciones proporcionados por la biblioteca estándar nunca lanzan excepciones).

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Applied to Behavior as published Correct behavior
LWG 2093 C++11 try_lock_until no lanzaba ninguna excepción lanza excepciones relacionadas con tiempo de espera

Véase también

bloquea el mutex, se bloquea si el mutex no está disponible
(función miembro pública)
intenta bloquear el mutex, retorna si el mutex no está disponible
(función miembro pública)
intenta bloquear el mutex, retorna si el mutex ha estado
no disponible durante el tiempo de espera especificado
(función miembro pública)
desbloquea el mutex
(función miembro pública)
Documentación de C para mtx_timedlock