<mutex>
Schließen Sie die Standardkopfzeilen <mutex ein>, um die Klassen mutex, recursive_mutex, timed_mutex und recursive_timed_mutex zu definieren; die Vorlagen lock_guard und unique_lock; und Typen und Funktionen unterstützt, die für den gegenseitigen Ausschluss Codebereiche definieren.
Für diesen Header wird "Concurrency Runtime (ConcRT)" verwendet, sodass er zusammen mit anderen ConcRT-Mechanismen verwendet werden kann. Weitere Informationen über ConcRT finden Sie unter Concurrency Runtime.
#include <mutex>
Hinweise
Hinweis
In Code, der mithilfe von /clr oder /clr:pure kompiliert wird, wird dieser Header blockiert.
Die Klassen mutex und recursive_mutex sind Mutextypen. Ein Mutextyp hat einen Standardkonstruktor und einen Destruktor, der keine Ausnahmen auslöst. Diese Objekte verfügen über Methoden, die gegenseitigen Ausschluss erzeugen, wenn mehrere Threads versuchen, das gleiche Objekt zu sperren. Insbesondere enthält ein Mutextyp die Methoden lock, try_lock und unlock:
Die lock-Methode blockiert den aufrufenden Thread, bis der Thread den Besitz der Mutex erhält. Der Rückgabewert wird ignoriert.
Die try_lock-Methode versucht, den Besitz der Mutex abzurufen, ohne zu blockieren. Der Rückgabetyp ist bool konvertierbar und ist, true, wenn die Methode Besitz erhält, jedoch ist andernfalls false.
Die unlock-Methode gibt den Besitz der Mutex vom aufrufenden Thread frei.
Sie können Mutextypen als Typargumente verwenden, um die Vorlagen lock_guard und unique_lock zu instanziieren. Sie können Objekte dieser Typen das Lock als Argument verwenden zu den Wartevorgangsmemberfunktionen in der Vorlage unter condition_variable_any.
Ein Mutextyp zeitgesteuertes wird den Anforderungen für einen Mutextyp erfüllen. Außerdem verfügt er die try_lock_for und try_lock_until-Methoden, die aufgerufen werden müssen, indem ein Argument verwenden und muss einem Typ zurückgeben, der in bool konvertiert werden kann. Ein Mutextyp zeitgesteuertes kann diese Funktionen definieren, indem zusätzliche Argumente verwendet, vorausgesetzt, dass diese zusätzlichen Argumente alle Standardwerte verfügen.
Die try_lock_for-Methode muss aufgerufen werden können, indem ein Argument, Rel_time verwendet, dessen Typ eine Instanziierung von chrono::duration. Die Methode versucht, den Besitz der Mutex abzurufen, aber wird in der Uhrzeit, die durch Rel_time festgelegt wird, unabhängig davon Erfolg zurück. Der Rückgabewert konvertiert true, wenn die Methode Besitz wird; andernfalls die Rückgabewertbekehrten zu false.
Die try_lock_until-Methode muss aufgerufen werden können, indem ein Argument, Abs_time verwendet, dessen Typ eine Instanziierung von chrono::time_point. Die Methode versucht, den Besitz der Mutex, gibt jedoch als die Zeit, die durch Abs_time festgelegt wird, unabhängig davon Erfolg nicht später zu erhalten. Der Rückgabewert konvertiert true, wenn die Methode Besitz wird; andernfalls die Rückgabewertbekehrten zu false.
Ein Mutextyp wird auch als verschließbarer Typ. Wenn nicht die Memberfunktionen try_lock bietet, ist es ein grundlegender verschließbarer Typ. Ein Mutextyp zeitgesteuertes wird auch als verschließbarer zeitgesteuertes Typ.
Klassen
Name |
Beschreibung |
---|---|
Stellt eine Vorlage dar, die instanziiert werden kann, um ein Objekt zu erstellen, dessen Destruktor mutex entsperrt. |
|
Stellt einen Mutex-Typ dar. Verwenden Sie Objekte dieses Typs, um gegenseitigen Ausschluss innerhalb eines Programms zu erzwingen. |
|
Stellt einen Mutex-Typ dar. Im constrast der mutex-Klasse, ist das Verhalten der aufrufenden Sperrenmethoden für Objekte, die bereits gesperrt werden, genau definiert. |
|
Stellt einen zeitgesteuerten Mutextyp dar. Verwenden Sie Objekte dieses Typs den gegenseitigen Ausschluss, um zu erzwingen, der die Blockierung innerhalb eines Programms Zeit-eingeschränkt hat. Anders als Objekte vom Typ timed_mutex, besteht die Auswirkung des mehrmaligen Aufrufens von Sperrenmethoden für recursive_timed_mutex-Objekte genau definiert. |
|
Stellt einen zeitgesteuerten Mutextyp dar. Verwenden Sie Objekte dieses Typs den gegenseitigen Ausschluss, um zu erzwingen, der die Blockierung innerhalb eines Programms Zeit-eingeschränkt hat. |
|
Stellt eine Vorlage dar, die instanziiert werden kann, um Objekte zu erstellen, die die Sperre und das Entsperren von mutex verwalten. |
Funktionen
Name |
Beschreibung |
---|---|
Stellt einen Mechanismus für ein angegebenes Objekt aufrufen aufrufbares genau einmal für die Ausführung bereit. |
|
Versucht, alle Argumente ohne Deadlock zu sperren. |
Strukturen
Name |
Beschreibung |
---|---|
Stellt einen Typ dar, der verwendet wird, um adopt_lock zu definieren. |
|
Stellt einen Typ dar, der ein defer_lock-Objekt definiert, das verwendet wird, um einen der überladenen Konstruktoren von unique_lock auszuwählen. |
|
Stellt struct dar, der der Vorlagenfunktion call_once verwendet wird, um, dass Initialisierungscode nur einmal aufgerufen wird, sogar bei Ausführungsthreads sicherzustellen. |
|
Stellt struct dar, das ein try_to_lock-Objekt definiert und verwendet wird, um einen der überladenen Konstruktoren von unique_lock auszuwählen. |
Variablen
Name |
Beschreibung |
---|---|
Stellt ein Objekt dar, das an Konstruktoren für lock_guard übergeben werden kann und unique_lock anzugeben, dass das Mutex Objekt, die ebenfalls dem Konstruktor übergeben wird, gesperrt wird. |
|
Stellt ein Objekt, das an den Konstruktor für unique_lock übergeben werden kann dar, dass der Konstruktor das Mutex-Objekt nicht sperren sollte, das auch an ihne übergeben wird. |
|
Stellt ein Objekt dar, das an den Konstruktor übergeben werden kann, sodass unique_lock angibt, dass der Konstruktor versuchen soll, mutex zu entsperren, der auch an ihn übergebene, ohne zu blockieren. |