critical_section-Klasse
Ein nicht wieder eintretender Mutex, der explizit die Concurrency Runtime beachtet.
Syntax
class critical_section;
Member
Öffentliche Typedefs
Name | Beschreibung |
---|---|
native_handle_type |
Ein Verweis auf ein critical_section -Objekt. |
Öffentliche Klassen
Name | Beschreibung |
---|---|
critical_section::scoped_lock Klasse | Ein ausnahmesicherer RAII-Wrapper für ein critical_section Objekt. |
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
critical_section | Erstellt einen neuen kritischen Abschnitt. |
~critical_section Destruktor | Zerstört einen kritischen Abschnitt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
lock | Beschafft diesen kritischen Abschnitt. |
native_handle | Gibt ein plattformspezifisches systemeigenes Handle zurück, falls vorhanden. |
try_lock | Versucht, die Sperre ohne Blockierung abzurufen. |
try_lock_for | Versucht, die Sperre zu erwerben, ohne eine bestimmte Anzahl von Millisekunden zu blockieren. |
unlock | Entsperrt den kritischen Abschnitt. |
Hinweise
Weitere Informationen finden Sie unter "Synchronisierungsdatenstrukturen".
Vererbungshierarchie
critical_section
Anforderungen
Kopfzeile: concrt.h
Namespace: Parallelität
critical_section
Erstellt einen neuen kritischen Abschnitt.
critical_section();
~critical_section
Zerstört einen kritischen Abschnitt.
~critical_section();
Hinweise
Es wird erwartet, dass die Sperre beim Ausführen des Destruktors nicht mehr gehalten wird. Die Destruktierung des kritischen Abschnitts mit der noch gehaltenen Sperre führt zu einem nicht definierten Verhalten.
lock
Beschafft diesen kritischen Abschnitt.
void lock();
Hinweise
Es ist oft sicherer, das scoped_lock-Konstrukt zu verwenden, um ein critical_section
Objekt auf eine ausnahmesichere Weise zu erwerben und freizugeben.
Wenn die Sperre bereits im aufrufenden Kontext gespeichert ist, wird eine improper_lock Ausnahme ausgelöst.
native_handle
Gibt ein plattformspezifisches systemeigenes Handle zurück, falls vorhanden.
native_handle_type native_handle();
Rückgabewert
Ein Verweis auf den kritischen Abschnitt.
Hinweise
Ein critical_section
Objekt ist keinem plattformspezifischen systemeigenen Handle für das Windows-Betriebssystem zugeordnet. Die Methode gibt einfach einen Verweis auf das Objekt selbst zurück.
critical_section::scoped_lock Klasse
Ein ausnahmesicherer RAII-Wrapper für ein critical_section
Objekt.
class scoped_lock;
scoped_lock::scoped_lock
Erstellt ein scoped_lock
Objekt und erwirbt das objekt, das critical_section
_Critical_section
im Parameter übergeben wird. Wenn der kritische Abschnitt von einem anderen Thread gehalten wird, wird dieser Aufruf blockiert.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Parameter
_Critical_section
Der zu sperrende kritische Abschnitt.
scoped_lock::~scoped_lock
Zerstört ein scoped_lock
Objekt und gibt den in seinem Konstruktor bereitgestellten kritischen Abschnitt frei.
~scoped_lock();
try_lock
Versucht, die Sperre ohne Blockierung abzurufen.
bool try_lock();
Rückgabewert
Wenn die Sperre abgerufen wurde, wird der Wert true
; andernfalls der Wert false
.
try_lock_for
Versucht, die Sperre zu erwerben, ohne eine bestimmte Anzahl von Millisekunden zu blockieren.
bool try_lock_for(unsigned int _Timeout);
Parameter
_Zeitüberschreitung
Die Anzahl der Millisekunden, die vor dem Timeout gewartet werden sollen.
Rückgabewert
Wenn die Sperre abgerufen wurde, wird der Wert true
; andernfalls der Wert false
.
Entsperren
Entsperrt den kritischen Abschnitt.
void unlock();