std::shared_timed_mutex::try_lock_shared_until
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
| Esta sección está incompleta Razón: sin 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) | |
| Intenta bloquear el mutex para propiedad compartida; regresa si el mutex no está disponible (función miembro pública) | |
| 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) |