Partager via


<mutex>

Inclut l'exclusion mutuelle standard <d'en-tête> pour définir les classes mutex, recursive_mutex, timed_mutex, et recursive_timed_mutex; les modèles lock_guard et unique_lock; et prend en charge les types et des fonctions qui définissent les régions de code d'exclusion mutuelle.

Cet en-tête utilise le runtime d'accès concurrentiel (ConcRT) pour pouvoir l'utiliser avec d'autres mécanismes de ConcRT. Pour plus d'informations sur ConcRT, consultez Concurrency Runtime.

#include <mutex>

Notes

Notes

Dans le code compilé à l'aide de /clr ou de /clr:pure, cet en-tête est bloqué.

Les classes mutex et recursive_mutex sont des types de mutex. Un type de mutex un constructeur par défaut et un destructeur qui ne lève pas d'exceptions. Ces objets ont des méthodes qui fournissent l'exclusion mutuelle lors de l'évaluation de threads pour verrouiller le même objet. En particulier, un type de mutex contient les méthodes lock, try_lock, et unlock:

  • La méthode d'lock bloque le thread appelant jusqu'à ce que le thread obtenir la propriété des mutex. La valeur de retour est ignorée.

  • Tente de méthode d'try_lock pour obtenir la propriété des mutex sans blocage. Type de retour est converti à bool et est true si la méthode obtient la propriété, mais est sinon false.

  • La méthode d'unlock libère la propriété des mutex du thread appelant.

Vous pouvez utiliser des types de mutex comme arguments de type pour instancier les modèles lock_guard et unique_lock. Vous pouvez utiliser des objets de ces types comme argument Lock aux fonctions membres d'attente dans le modèle condition_variable_any.

Type expiré de mutex répond aux besoins d'un type de mutex. De plus, il prend les méthodes d'try_lock_for et d'try_lock_until à être appelées à l'aide d'un argument et doit retourner un type qui est converti à bool. Type expiré d'exclusion mutuelle (mutex) peut définir ces fonctions en utilisant les arguments supplémentaires, à condition que ces arguments supplémentaires tous ont des valeurs par défaut.

  • La méthode d'try_lock_for doit être appelable à l'aide d'un argument, Rel_time, dont le type est une instanciation d'chrono::duration. Tente de méthode pour obtenir la propriété des mutex, mais retourne au moment indiqué par Rel_time, indépendamment de la réussite. La valeur de retour convertit en true si la méthode obtient la propriété ; sinon, la conversion de la valeur de retour à false.

  • La méthode d'try_lock_until doit être appelable à l'aide d'un argument, Abs_time, dont le type est une instanciation d'chrono::time_point. Tente de méthode pour obtenir la propriété des mutex, mais retourne pas une valeur postérieure à l'heure indiqué par Abs_time, indépendamment de la réussite. La valeur de retour convertit en true si la méthode obtient la propriété ; sinon, la conversion de la valeur de retour à false.

Un type de mutex est également appelé type verrouillable. S'il ne fournit pas de fonction membre try_lock, il s'agit d'un type verrouillable de base. Type expiré d'exclusion mutuelle (mutex) est également appelé type verrouillable expiré.

Classes

Nom

Description

lock_guard, classe

Représente un modèle qui peut être instancié pour créer un objet dont le destructeur de déverrouiller mutex.

mutex, classe (STL)

Représente un type de mutex. Utilisez les objets de ce type pour garantir l'exclusion mutuelle dans le cadre d'un programme.

recursive_mutex, classe

Représente un type de mutex. Dans le constrast à la classe d'mutex, le comportement des méthodes de verrouillage appel pour les objets qui sont déjà verrouillés est bien défini.

recursive_timed_mutex, classe

Représente un type expiré d'exclusion mutuelle (mutex). Utilisez les objets de ce type pour garantir l'exclusion mutuelle de temps a limité le blocage dans le cadre d'un programme. Contrairement aux objets de type timed_mutex, le résultat de l'appel des méthodes de verrouillage pour les objets d'recursive_timed_mutex est bien défini.

timed_mutex, classe

Représente un type expiré d'exclusion mutuelle (mutex). Utilisez les objets de ce type pour garantir l'exclusion mutuelle de temps a limité le blocage dans le cadre d'un programme.

unique_lock, classe

Représente un modèle qui peut être instancié pour créer des objets qui gèrent le verrouillage et le déverrouillage d'mutex.

Fonctions

Nom

Description

call_once, fonction

Fournit un mécanisme pour appeler un objet appelable spécifié une seule fois pendant l'exécution.

lock, fonction

Tentative de verrouillage de tous les arguments sans blocage.

Structures

Nom

Description

adopt_lock_t, structure

Représente un type utilisé pour définir adopt_lock.

defer_lock_t, structure

Représente un type qui définit un objet d'defer_lock utilisé pour sélectionner l'un des constructeurs surchargés d'unique_lock.

once_flag, structure

Représente struct utilisé avec la fonction call_once de modèle pour garantir le code d'initialisation est appelée une seule fois, même en présence de plusieurs threads d'exécution.

try_to_lock_t, structure

Représente struct qui définit un objet d'try_to_lock et permet de sélectionner l'un des constructeurs surchargés d'unique_lock.

Variables

Nom

Description

adopt_lock, variable

Représente un objet qui peut être passé aux constructeurs pour lock_guard et unique_lock pour indiquer que le mutex objet qui également sont transmis au constructeur est verrouillé.

defer_lock, variable

Représente un objet qui peut être passé au constructeur de unique_lock, pour indiquer que le constructeur ne doit pas de verrouiller l'objet de mutex qui également est transmis à est.

try_to_lock, variable

Représente un objet qui peut être passée au constructeur pour qu' unique_lock indique que le constructeur doit essayer de déverrouiller mutex également qui est transmis à est sans blocage.

Voir aussi

Autres ressources

Fichiers d'en-tête de bibliothèque standard C++