Freigeben über


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();

Siehe auch

Concurrency-Namespace
reader_writer_lock-Klasse