Espacios de nombres
Variantes
Acciones

std::timed_mutex::try_lock_until

De cppreference.com
< cpp‎ | thread‎ | timed mutex
 
 
Biblioteca de apoyo de concurrencia
Hilos
(C++11)
(C++20)
Espacio de nombres this_thread
(C++11)
(C++11)
(C++11)
Cancelación cooperativa
Exclusión mutua
Gestión genérica de bloqueo
(C++11)
(C++11)
(C++11)
(C++11)
Variables de condición
(C++11)
Semáforos
Pestillos y barreras
(C++20)
(C++20)
Futuros
(C++11)
(C++11)
(C++11)
Recuperación segura
Punteros de riesgo
Tipos atómicos
(C++11)
(C++20)
Inicialización de tipos atómicos
(C++11)(en desuso en C++20)
(C++11)(en desuso en C++20)
Orden de memoria
Funciones independientes para operaciones atómicas
Funciones independientes para indicadores atómicos
 
 
template<class Clock, class Duration >
bool try_lock_until(conststd::chrono::time_point<Clock,Duration>& timeout_time );
(desde C++11)

Intenta bloquear el mutex. Bloquea hasta que se alcanza el tiempo de espera timeout_time especificado o se adquiere el bloqueo, lo que ocurra primero. En la adquisición exitosa del cerrojo, devuelve true; de lo contrario, devuelve false.

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

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

El estándar 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 puede ser menor o mayor que timeout_time - Clock::now() en el momento de la llamada, pero podría no serlo, dependiendo de la dirección del ajuste y si es respetado por la implementación. La función también puede bloquearse por más tiempo que hasta después de que se haya alcanzado timeout_time debido a demoras en la programación o en la contención de recursos.

Al igual que con try_lock(), esta función puede fallar falsamente (spuriously) y devolver false incluso si el mutex no fue bloqueado por ningún otro hilo en algún momento antes del tiempo de espera timeout_time.

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

Si try_lock_until es llamada por un hilo que ya posee el mutex, el comportamiento no está definido.

Contenido

[editar]Parámetros

timeout_time - Punto de tiempo máximo hasta el cual bloquearse.

[editar]Valor de retorno

true Si el bloqueo se adquirió exitosamente, de lo contrario, false.

[editar]Excepciones

Cualquier excepción lanzada por el reloj, punto de tiempo o duración usados para medir durante la ejecución (los relojes, puntos de tiempo y duraciones proporcionadas por la biblioteca estándar nunca lanzan).

[editar]Ejemplo

Este ejemplo muestra un bloqueo de 10 segundos

#include <thread>#include <iostream>#include <chrono>#include <mutex>   std::timed_mutex test_mutex;   void f(){auto now=std::chrono::steady_clock::now(); test_mutex.try_lock_until(now +std::chrono::seconds(10));std::cout<<"hola mundo\n";}   int main(){std::lock_guard<std::timed_mutex> l(test_mutex);std::thread t(f); t.join();}


[editar]Véase también

Bloquea el mutex; se bloquea si el mutex no está disponible
(función miembro pública)[editar]
Intenta bloquear el mutex; regresa si el mutex no está disponible
(función miembro pública)[editar]
Intenta bloquear el mutex; regresa si el mutex no ha estado
disponible durante el tiempo de espera especificado
(función miembro pública)[editar]
Desbloquea el mutex
(función miembro pública)[editar]
Documentación de C para mtx_timedlock
close