Espacios de nombres
Variantes

std::shared_timed_mutex::try_lock_shared_until

De cppreference.com
 
 
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
(C++11)
Gestión genérica de bloqueo
(C++11)
(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)
(C++11)
Recuperación segura
(C++26)
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_shared_until( const std::chrono::time_point<Clock,Duration>& timeout_time );
(desde C++14)

Intenta bloquear el mutex en modalidad compartida. Se bloquea hasta que se haya alcanzado el punto de tiempo timeout_time o se haya adquirido el cerrojo compartido, lo que ocurra primero. En la adquisición exitosa del cerrojo devuelve true, de lo contrario devuelve false.

Si ya ha ocurrido timeout_time, la función se comporta como try_lock_shared().

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_shared(), se admite que esta función pueda fallar falsamente (spuriously) y que devuelva false incluso si el mutex no fue bloqueado por ningún otro hilo en algún punto antes de 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_shared_until se llama por un hilo que ya posee el mutex en cualquier modalidad (compartida o exclusiva), el comportamiento no está definido.

Parámetros

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

Valor de retorno

true si la propiedad compartida del cerrojo se adquirió exitosamente; de lo contrario, false.

Excepciones

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

Ejemplo

Véase también

Intenta bloquear el mutex; regresa si el mutex no ha estado
disponible hasta que se haya alcanzado el punto de tiempo especificado
(función miembro pública) [editar]
Intenta bloquear el mutex para propiedad compartida; regresa si el mutex no está disponible
(función miembro pública) [editar]
Intenta bloquear el mutex para propiedad compartida; regresa si el mutex no ha estado
disponible durante el tiempo de espera especificado
(función miembro pública) [editar]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.