recursive_timed_mutex (Clase)
Representa un tipo de exclusión mutua cronometrado. Los objetos de este tipo se usan para aplicar una exclusión mutua mediante un bloqueo limitado por tiempo dentro de un programa. A diferencia de los objetos de tipo timed_mutex, el efecto de llamar a métodos de bloqueo de objetos recursive_timed_mutex
está bien definido.
Sintaxis
class recursive_timed_mutex;
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
recursive_timed_mutex | Crea un objeto recursive_timed_mutex que no está bloqueado. |
~recursive_timed_mutex (Destructor) | Libera todos los recursos usados por el objeto recursive_timed_mutex . |
Métodos públicos
Nombre | Descripción |
---|---|
lock | Bloquea el subproceso que realiza la llamada hasta que este obtiene la propiedad mutex . |
try_lock | Intenta obtener la propiedad de mutex sin bloquearlo. |
try_lock_for | Intenta obtener la propiedad de mutex para un intervalo de tiempo especificado. |
try_lock_until | Intenta obtener la propiedad de mutex hasta una hora especificada. |
unlock | Libera la propiedad de mutex . |
Requisitos
Encabezado:<mutex>
Espacio de nombres: std
lock
Bloquea el subproceso que realiza la llamada hasta que este obtiene la propiedad mutex
.
void lock();
Comentarios
Si el subproceso que realiza la llamada ya posee mutex
, el método se devuelve inmediatamente, y el bloqueo anterior permanece vigente.
recursive_timed_mutex (Constructor)
Crea un objeto recursive_timed_mutex
que no está bloqueado.
recursive_timed_mutex();
~recursive_timed_mutex (Destructor)
Libera todos los recursos usados por el objeto recursive_timed_mutex
.
~recursive_timed_mutex();
Comentarios
Si el objeto está bloqueado cuando se ejecuta el destructor, el comportamiento es indefinido.
try_lock
Intenta obtener la propiedad de mutex
sin bloquearlo.
bool try_lock() noexcept;
Valor devuelto
true
si el método ha obtenido correctamente la propiedad de mutex
o si el subproceso que realiza la llamada ya posee mutex
; de otro modo, false
.
Comentarios
Si el subproceso que realiza la llamada ya posee mutex
, la función devuelve true
inmediatamente, y el bloqueo anterior permanece vigente.
try_lock_for
Intenta obtener la propiedad de mutex
sin bloquearlo.
template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);
Parámetros
Rel_time
Un objeto chrono::duration que especifica el tiempo máximo que el método intenta obtener la propiedad de mutex
.
Valor devuelto
true
si el método obtiene correctamente la propiedad de mutex
o si el subproceso que realiza la llamada ya posee mutex
; de otro modo, false
.
Comentarios
Si el subproceso que realiza la llamada ya posee mutex
, el método devuelve true
inmediatamente, y el bloqueo anterior permanece vigente.
try_lock_until
Intenta obtener la propiedad de mutex
sin bloquearlo.
template <class Clock, class Duration>
bool try_lock_for(const chrono::time_point<Clock, Duration>& Abs_time);
bool try_lock_until(const xtime* Abs_time);
Parámetros
Abs_time
Punto en el tiempo que especifica el umbral después del cual el método ya no intenta obtener la propiedad de mutex
.
Valor devuelto
true
si el método obtiene correctamente la propiedad de mutex
o si el subproceso que realiza la llamada ya posee mutex
; de otro modo, false
.
Comentarios
Si el subproceso que realiza la llamada ya posee mutex
, el método devuelve true
inmediatamente, y el bloqueo anterior permanece vigente.
desbloquear
Libera la propiedad de mutex
.
void unlock();
Comentarios
Este método libera la propiedad de mutex
solo después de que se llame tantas veces como se ha llamado a lock, try_lock, try_lock_for y try_lock_until correctamente en el objeto recursive_timed_mutex
.
Si el subproceso que realiza la llamada no posee mutex
, el comportamiento es indefinido.