Share via


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

bloquear

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.

Consulte también

Referencia de archivos de encabezado
<mutex>