recursive_mutex (Clase)
Representa un tipo de exclusión mutua. Al contrario que mutex, el comportamiento de las llamadas a métodos de bloqueo para objetos que ya están bloqueados está bien definido.
Sintaxis
class recursive_mutex;
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
recursive_mutex | Construye un objeto recursive_mutex . |
~recursive_mutex (Destructor) | Libera todos los recursos usados por el objeto recursive_mutex . |
Métodos públicos
Nombre | Descripción |
---|---|
lock | Bloquea el subproceso de llamada hasta que este obtiene la propiedad de la exclusión mutua. |
try_lock | Intenta obtener la propiedad de la exclusión mutua sin bloquearla. |
unlock | Libera la propiedad de la exclusión mutua. |
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_mutex
Crea un objeto recursive_mutex
que no está bloqueado.
recursive_mutex();
~recursive_mutex
Libera todos los recursos usados por el objeto .
~recursive_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 obtiene correctamente la propiedad de mutex
o si el subproceso que realiza la llamada ya posee mutex**; otherwise, **false
.
Comentarios
Si el subproceso que realiza la llamada ya posee mutex
, la función devuelve true
inmediatamente, y el bloqueo anterior permanece vigente.
desbloquear
Libera la propiedad de la exclusión mutua.
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 y try_lock correctamente en el objeto recursive_mutex
.
Si el subproceso que realiza la llamada no posee mutex
, el comportamiento es indefinido.