CCriticalSection

Ein Objekt der Klasse CCriticalSection stellt einen "kritischen Abschnitt" dar-ein Synchronisierungsobjekt, das ein Thread zu einem Zeitpunkt Zugriff auf eine Ressource oder Abschnitt des Codes ermöglicht. Kritische Abschnitte sind nützlich, wenn nur ein Thread zu einem Zeitpunkt zugelassen werden kann, um Daten oder eine andere kontrollierte Ressource zu ändern. Hinzufügen von Knoten zu einer verknüpften Liste ist beispielsweise ein Prozess, der nur von einem Thread zu einem Zeitpunkt erlaubt werden sollte. Mit einem CCriticalSection -Objekt zur Steuerung der verknüpften Liste, kann nur ein Thread zu einem Zeitpunkt auf die Liste zugreifen.

Kritische Abschnitte werden verwendet statt Mutexe Geschwindigkeit ist entscheidend und die Ressource wird nicht über Prozessgrenzen hinweg verwendet werden. Weitere Informationen zur Verwendung von Mutexen in MFC finden Sie unter CMutex.

Um ein CCriticalSection -Objekt zu verwenden, Erstellen des CCriticalSection -Objekts wenn es benötigt wird. Sie können dann den kritischen Abschnitt zugreifen, wenn der Konstruktor zurückgegeben. Unlock aufrufen, wenn Sie fertig sind auf den kritischen Abschnitt zugreifen.

Um Zugriff auf eine Ressource gesteuert, indem ein CCriticalSection -Objekt auf diese Weise erstellen Sie zunächst eine Variable vom Typ CSingleLock in Ihre Ressource Zugriff Member-Funktion. Rufen Sie dann das Lock-Objekt Lock -Memberfunktion (z. B. CSingleLock::Lock). An dieser Stelle wird der Thread entweder auf die Ressource zugreifen, warten, bis die Ressource freigegeben werden und Zugriff, oder warten, bis die Ressource freigegeben werden und die Zeit aus, nicht auf die Ressource zugreifen. In jedem Fall wurde die Ressource in einer threadsicheren Weise abgerufen. Um die Ressourcen freizugeben, verwenden Sie das Sperrobjekt Unlock -Member-Funktion (z. B. CSingleLock::Unlock) oder erlauben Sie das Lock-Objekt außerhalb des Gültigkeitsbereichs fallen.

Alternativ können Sie erstellen ein CCriticalSection Objekt Stand-Alone und es explizit zugreifen, bevor Sie auf die gesteuerte Ressource zugreifen. Diese Methode, während klarer, jemand liest den Quellcode ist anfälliger für Fehler, wie Sie sich erinnern müssen, zum Sperren und entsperren den kritischen Abschnitt vor und nach dem Zugriff.

Weitere Informationen zur Verwendung von CCriticalSection Objekte finden Sie im Artikel Multithreading: Verwendung die Synchronisierungsklassen im Visual C++ Programmer's Guide.

# include lt;afxmt.h>

Klassenmember |nbsp; Basisklasse | Hierarchiediagramm

Beispiel&Nbsp; MFC MTGDI-Beispiel

Siehe auch&Nbsp;CMutex

Index