<mutex>
Schließen Sie den <mutex> Standardheader ein, um die Klassen mutex, recursive_mutex, timed_mutex und recursive_timed_mutex zu definieren, die Vorlagen lock_guard und unique_lock; und unterstützende Typen und Funktionen, die für Codebereiche gegenseitiger Ausschluss definieren.
Dieser Header verwendet Concurrency Runtime (ConcRT) für Sie ihn mit anderen ConcRT-Mechanismen verwenden können.Weitere Informationen zu ConcRT, finden Sie unter Concurrency Runtime.
#include <mutex>
Hinweise
Hinweis |
---|
In Code, der kompiliert wird, indem /clr oder /clr:pure verwendet, wird dieser Header blockiert. |
Die Klassen mutex und recursive_mutex sind Mutextypen.Ein Mutextyp verfügt über 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 abruft.Der Rückgabewert wird ignoriert.
Die try_lock-Methode versucht, Typ- Besitz der Mutex, ohne Blockierung.Der Rückgabetyp ist zu bool konvertierbar und ist true, wenn die Methode Besitz erhält, ist jedoch 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 als das Lock-Argument verwenden zu den Wartevorgangsmemberfunktionen in der Vorlage condition_variable_any.
Ein zeitgesteuertes Mutextyp wird den Anforderungen für einen Mutextyp erfüllt.Außerdem verfügt er die try_lock_for und try_lock_until-Methoden, die aufgerufen werden können, müssen mit einem Argument verwenden und einen Typ zurückgeben, der zu bool konvertiert werden kann.Ein zeitgesteuertes Mutextyp kann diese Funktionen definieren, indem zusätzliche Argumente verwendet werden, vorausgesetzt, dass diese zusätzlichen Argumente alle Standardwerte verfügen.
Die try_lock_for-Methode muss aufgerufen werden können, indem sie ein Argument, Rel_time verwendet, dessen Typ eine Instanziierung von chrono::duration ist.Die - Methode versucht, Typ- Besitz der Mutex, aber gibt in der Zeit, die von Rel_time festgelegt ist, unabhängig vom Erfolg zurück.Die Rückgabewertbekehrten zu true, wenn die Methode Besitz erhält; andernfalls die Rückgabewertbekehrten zu false.
Die try_lock_until-Methode muss aufgerufen werden können, indem sie ein Argument, Abs_time verwendet, dessen Typ eine Instanziierung von chrono::time_point ist.Die - Methode versucht, den Besitz der Mutex, jedoch zurück als die Zeit, die durch Abs_time festgelegt ist, unabhängig vom Erfolg später nicht zu erhalten.Die Rückgabewertbekehrten zu true, wenn die Methode Besitz erhält; andernfalls die Rückgabewertbekehrten zu false.
Ein Mutextyp wird auch als verschließbarer Typ.Wenn er nicht die Memberfunktion try_lock bietet, ist es ein grundlegender verschließbarer Typ.Ein zeitgesteuertes Mutextyp wird auch als ein zeitgesteuertes verschließbarer Typ.
Klassen
Name |
Beschreibung |
---|---|
Stellt eine Vorlage dar, die instanziiert werden kann, um ein - Objekt zu erstellen, dessen Destruktor mutex entsperrt. |
|
Stellt einen Mutextyp dar.Verwenden Sie Objekte dieses Typs, um gegenseitiger Ausschluss innerhalb eines Programms zu erzwingen. |
|
Stellt einen Mutextyp dar.Im constrast zur mutex-Klasse, ist das Verhalten von aufrufenden Sperrenmethoden für Objekte, die bereits gesperrt werden, gut definierten. |
|
Stellt einen bestimmten zeitlichen Mutextyp dar.Verwenden Sie Objekte dieses Typs, um gegenseitiger Ausschluss zu erzwingen, der die Blockierung innerhalb eines Programms Zeit-eingeschränkt verfügt.Anders als Objekte vom Typ timed_mutex Auswirkung, des Aufrufens von Sperrenmethoden für recursive_timed_mutex-Objekte stringent. |
|
Stellt einen bestimmten zeitlichen Mutextyp dar.Verwenden Sie Objekte dieses Typs, um gegenseitiger Ausschluss zu erzwingen, der die Blockierung innerhalb eines Programms Zeit-eingeschränkt verfügt. |
|
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 während der 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 eine 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, selbst zugreifen kann der Ausführungsthreads sicherzustellen. |
|
Stellt struct dar, das ein try_to_lock-Objekt definiert und verwendet wird, um eine 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 die Mutex Objekt, die auch dem Konstruktor übergeben wird, gesperrt ist. |
|
Stellt ein - Objekt, das dem Konstruktor für unique_lock übergeben werden kann dar, dass der Konstruktor das Mutex-Objekt nicht sperren sollte, das auch darauf ü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 darauf übergeben wird, ohne Blockierung. |