std::shared_timed_mutex::try_lock_shared_for
template<class Rep, class Period > bool try_lock_shared_for(conststd::chrono::duration<Rep,Period>& timeout_duration ); | (desde C++14) | |
Intenta bloquear el mutex en modalidad compartida. Se bloquea hasta que haya transcurrido la duración timeout_duration
especificada 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 timeout_duration
es menor o igual que timeout_duration.zero()
, la función se comporta como try_lock_shared().
Esta función puede bloquearse por más de timeout_duration
debido a demoras en la programación o en la contención de recursos.
El estándar recomienda que se utilice un reloj estable para medir la duración. Si en su lugar una implementación utiliza un reloj del sistema, el tiempo de espera también puede ser sensible a los ajustes del reloj.
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 momento durante timeout_duration
.
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_for
se llama por un hilo que ya posee el mutex
en cualquier modalidad (compartida o exclusiva), el comportamiento no está definido.
Contenido |
[editar]Parámetros
timeout_duration | - | Duración máxima por la cual bloquearse. |
[editar]Valor de retorno
true si la propiedad compartida del cerrojo se adquirió exitosamente; de lo contrario, false.
[editar]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).
[editar]Ejemplo
Esta sección está incompleta Razón: sin ejemplo |
[editar]Véase también
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 hasta que se haya alcanzado el punto de tiempo especificado (función miembro pública) | |
Intenta bloquear el mutex; regresa si el mutex no ha estado disponible durante el tiempo de espera especificado (función miembro pública) |