Freigeben über


<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

HinweisHinweis

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.

Hh921467.collapse_all(de-de,VS.110).gifKlassen

Name

Beschreibung

lock_guard Klasse

Stellt eine Vorlage dar, die instanziiert werden kann, um ein - Objekt zu erstellen, dessen Destruktor mutex entsperrt.

mutex Class (STL)

Stellt einen Mutextyp dar.Verwenden Sie Objekte dieses Typs, um gegenseitiger Ausschluss innerhalb eines Programms zu erzwingen.

recursive_mutex Klasse

Stellt einen Mutextyp dar.Im constrast zur mutex-Klasse, ist das Verhalten von aufrufenden Sperrenmethoden für Objekte, die bereits gesperrt werden, gut definierten.

recursive_timed_mutex Klasse

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.

timed_mutex Klasse

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.

unique_lock Klasse

Stellt eine Vorlage dar, die instanziiert werden kann, um Objekte zu erstellen, die die Sperre und das Entsperren von mutex verwalten.

Hh921467.collapse_all(de-de,VS.110).gifFunktionen

Name

Beschreibung

call_once Funktion

Stellt einen Mechanismus für ein angegebenes Objekt aufrufen aufrufbares genau einmal während der Ausführung bereit.

lock Funktionen

versucht, alle Argumente ohne Deadlock zu sperren.

Hh921467.collapse_all(de-de,VS.110).gifStrukturen

Name

Beschreibung

adopt_lock_t-Struktur

Stellt einen Typ dar, der verwendet wird, um adopt_lock zu definieren.

defer_lock_t-Struktur

Stellt einen Typ dar, der ein defer_lock-Objekt definiert, das verwendet wird, um eine der überladenen Konstruktoren von unique_lock auszuwählen.

once_flag-Struktur

Stellt struct dar, der der Vorlagenfunktion call_once verwendet wird, um, dass Initialisierungscode nur einmal aufgerufen wird, selbst zugreifen kann der Ausführungsthreads sicherzustellen.

try_to_lock_t-Struktur

Stellt struct dar, das ein try_to_lock-Objekt definiert und verwendet wird, um eine der überladenen Konstruktoren von unique_lock auszuwählen.

Hh921467.collapse_all(de-de,VS.110).gifVariablen

Name

Beschreibung

adopt_lock Variable

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.

defer_lock Variable

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.

try_to_lock Variable

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.

Siehe auch

Weitere Ressourcen

Headerdateien