<mutex>
Incluya el encabezado estándar <mutex> para definir clases mutex, recursive_mutex, timed_mutex, y recursive_timed_mutex; las plantillas lock_guard y unique_lock; y a los tipos y funciones que definen las regiones de código de exclusión mutua.
Este encabezado utiliza el tiempo de ejecución (ConcRT) de simultaneidad para que pueda utilizarlo junto con otros mecanismos ConcRT.Para obtener más información sobre ConcRT, vea Runtime de simultaneidad.
#include <mutex>
Comentarios
[!NOTA]
En el código compilado utilizando /clr o /clr:pure, este encabezado está bloqueado.
Las clases mutex y recursive_mutex son tipos mutex.Un tipo mutex tiene un constructor predeterminado y el destructor que no produzca excepciones.Estos objetos tienen métodos que proporcionan la exclusión mutua cuando los varios subprocesos para bloquear el mismo objeto.Específicamente, un tipo mutex contiene métodos lock, try_lock, y unlock:
El método de lock bloquea el subproceso que realiza la llamada hasta que el subproceso obtenga la propiedad mutex.Se omite el valor devuelto.
El método de try_lock intenta obtener la propiedad mutex sin bloquearse.El tipo de valor devuelto se puede convertir en bool y es true si el método obtiene su propiedad, pero es de otro modo false.
Las versiones del método de unlock la propiedad del mutex del subproceso de la llamada.
Puede utilizar tipos mutex como argumentos de tipo para crear instancias de las plantillas lock_guard y unique_lock.Puede utilizar los objetos de estos tipos mientras el argumento de Lock al miembro de espera funciona en la plantilla condition_variable_any.
Un tipo agotado mutex cumple los requisitos para un tipo de exclusión mutua.Además, tiene los métodos de try_lock_for y de try_lock_until que deben ser accesibles mediante un argumento y debe devolver un tipo que pueda convertirse a bool.Un tipo agotado mutex puede definir estas funciones mediante argumentos adicionales, con tal de que los argumentos adicionales todos tienen valores predeterminados.
El método de try_lock_for debe ser accesible mediante un argumento, Rel_time, cuyo tipo es una instancia de chrono::duration.El método intenta obtener la propiedad mutex, pero cambia en el tiempo comunicado por Rel_time, sin importar correctamente.El valor devuelto se convierte en true si el método obtiene su propiedad; si no, el valor devuelto se convierte en false.
El método de try_lock_until debe ser accesible mediante un argumento, Abs_time, cuyo tipo es una instancia de chrono::time_point.El método intenta obtener la propiedad mutex, pero vuelve no posterior a tiempo comunicado por Abs_time, sin importar correctamente.El valor devuelto se convierte en true si el método obtiene su propiedad; si no, el valor devuelto se convierte en false.
Se sabe que un tipo mutex también como tipo bloqueable.Si no proporciona la función try_lock miembro, es un tipo bloqueable básico.Se sabe que un tipo agotado mutex también como tipo bloqueable sincronizados.
Clases
Nombre |
Descripción |
---|---|
Representa una plantilla que se pueden crear instancias para crear un objeto cuyo destructor unblock mutex. |
|
Representa un tipo de exclusión mutua.Utilice objetos de este tipo para aplicar la exclusión mutua dentro de un programa. |
|
Representa un tipo de exclusión mutua.En constrast a la clase de mutex, el comportamiento de los métodos de bloqueo de llamada para los objetos bloqueados ya esté bien definido. |
|
Representa un tipo agotó la exclusión mutua.Utilice objetos de este tipo para aplicar la exclusión mutua que tiene bloqueo limitado en tiempo dentro de un programa.A diferencia de los objetos de timed_mutex escrito, el efecto de los métodos de bloqueo de llamada para los objetos de recursive_timed_mutex esté bien definido. |
|
Representa un tipo agotó la exclusión mutua.Utilice objetos de este tipo para aplicar la exclusión mutua que tiene bloqueo limitado en tiempo dentro de un programa. |
|
Representa una plantilla que se pueden crear instancias para crear objetos que administran el bloqueo y desbloqueo de mutex. |
Funciones
Nombre |
Descripción |
---|---|
Proporciona un mecanismo para llamar a un objeto accesible especificado exactamente una vez durante la ejecución. |
|
Intentos de bloqueo todos los argumentos sin interbloqueo. |
Structs
Nombre |
Descripción |
---|---|
Representa un tipo que se utiliza para definir adopt_lock. |
|
Representa un tipo que defina un objeto de defer_lock que se utiliza para seleccionar uno de los constructores sobrecargados de unique_lock. |
|
Representa struct que se utiliza con la función call_once de plantilla para garantizar que el código de inicialización se invoca solo una vez, incluso en presencia de varios subprocesos de ejecución. |
|
Representa struct que define un objeto de try_to_lock y se utiliza para seleccionar uno de los constructores sobrecargados de unique_lock. |
Variables
Nombre |
Descripción |
---|---|
Representa un objeto que se puede pasar a los constructores para que lock_guard y unique_lock indica que el objeto mutex que también se pasa al constructor está bloqueado. |
|
Representa un objeto que se puede pasar al constructor para unique_lock, para indicar que el constructor no debe bloquear el objeto mutex que también se pasa al. |
|
Representa un objeto que se puede pasar al constructor para que unique_lock indica que el constructor debe intentar desbloquear mutex que también se pasa el sin bloquearse. |