CCriticalSections-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 |
---|---|
Erstellt ein CCriticalSection-Objekt. |
Öffentliche Methoden
Name |
Description |
---|---|
Verwenden Sie, um CCriticalSection-Objekt zu erhalten. |
|
Gibt das CCriticalSection-Objekt frei. |
Öffentliche Operatoren
Name |
Description |
---|---|
Ruft einen Zeiger auf den internen CRITICAL_SECTION-Objekt ab. |
Öffentliche Datenmember
Name |
Description |
---|---|
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
CCriticalSection
Anforderungen
Header: afxmt.h