Freigeben über


CCriticalSection-Klasse

Stellt einen "kritischen Abschnitt" dar - ein Synchronisierungsobjekt, das einen Thread auf einmal ermöglicht, eine Ressource oder einen Codeabschnitt zuzugreifen.

class CCriticalSection : public CSyncObject

Mitglieder

Öffentliche Konstruktoren

Name

Description

CCriticalSection::CCriticalSection

Erstellt ein CCriticalSection-Objekt.

Öffentliche Methoden

Name

Description

CCriticalSection::Lock

Verwenden Sie, um CCriticalSection-Objekt zu erhalten.

CCriticalSection::Unlock

Gibt das CCriticalSection-Objekt frei.

Öffentliche Operatoren

Name

Description

CCriticalSection::operator CRITICAL_SECTION*

Ruft einen Zeiger auf den internen CRITICAL_SECTION-Objekt ab.

Öffentliche Datenmember

Name

Description

CCriticalSection::m_sect

Ein CRITICAL_SECTION-Objekt.

Hinweise

Kritische Abschnitte sind nützlich, wenn nur einen Thread auf einmal ermöglicht werden kann, um Daten oder eine andere gesteuerte Ressource zu ändern. Beispielsweise Knoten zu einer verknüpften Liste hinzuzufügen ist ein Prozess, der durch einen Thread nur jeweils ausgeführt werden dürfen. Durch ein CCriticalSection-Objekt verwendet, um die verknüpfte Liste zu steuern, kann nur ein Thread zur Liste auf einmal verschaffen.

Hinweis

Die Funktionalität der CCriticalSection-Klasse wurde von einem tatsächlichen Objekt Win32 CRITICAL_SECTION bereitgestellt.

Kritische Abschnitte werden anstelle der Mutexe verwendet (siehe CMutex), wenn Geschwindigkeit wichtig ist und die Ressource nicht über Prozessgrenzen verwendet wird.

Es gibt zwei Methoden für die Anwendung eines CCriticalSection-Objekts: eigenständig und in einer Klasse eingebettet.

  • Die eigenständige Methode, um einen eigenständigen CCriticalSection-Objekts zu verwenden, erstellen das Objekt CCriticalSection, wenn sie benötigt wird. Nachdem eine erfolgreiche Rückgabe aus dem Konstruktor, explizit das Objekt mit einem Aufruf von Sperre sperren. Rufen Sie Entsperren Sie auf, wenn Sie auf den kritischen Abschnitt Dateizugriff durchgeführt werden. Diese Methode, während klarer an jemanden, das den Quellcode lesen, ist fehleranfälliger, wie Sie wissen müssen, den kritischen Abschnitt vor und nach Zugriff zu sperren und zu entsperren.

    Eine vorzuziehendere Methode ist, die CSingleLock-Klasse zu verwenden. Sie enthält außerdem eine Lock und Unlock-Methode, müssen aber nicht um das Entsperren der Ressource zu befürchten, wenn eine Ausnahme auftritt.

  • Eingebettete Methode können Sie eine Klasse mit mehreren Threads freigeben, indem Sie bei Bedarf einen en-artig Datenmember CCriticalSection hinzufügen und Datenmember sperren.

Weitere Informationen zur Verwendung von CCriticalSection-Objekten, finden Sie im Artikel Multithreading: Erstellen der Synchronisierungsklassen.

Vererbungshierarchie

CObject

CSyncObject

CCriticalSection

Anforderungen

Header: afxmt.h

Siehe auch

Referenz

CSyncObject-Klasse

Hierarchiediagramm

CMutex-Klasse