CMutex

Ein Objekt der CMutex -Klasse stellt eine "Mutex" &Nbsp; — ein Synchronisierungsobjekt, das ein Thread wechselseitig exklusiver Zugriff auf eine Ressource ermöglicht. Mutexe 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 CMutex -Objekt zur Steuerung der verknüpften Liste, kann nur ein Thread zu einem Zeitpunkt auf die Liste zugreifen.

Um eine CMutex -Objekt verwenden, konstruieren Sie das CMutex -Objekt wenn es benötigt wird. Geben Sie den Namen des Mutex gewartet werden soll, und Ihre Anwendung sollte zunächst selbst. Sie können dann den Mutex zugreifen, wenn der Konstruktor zurückgegeben. CSyncObject::Unlock aufrufen, wenn Sie fertig sind auf die gesteuerte Ressource zugreifen.

Eine alternative Methode für die Verwendung der CMutex -Objekten ist eine Variable des Typs CMutex als Datenmember der Klasse hinzu, die Sie steuern möchten. Während des Baus des kontrollierten Objekts rufen Sie den Konstruktor des CMutex -Datenmembers angeben, wenn der Mutex ist anfänglich gehört, den Namen des Mutex (falls es über Prozessgrenzen hinweg verwendet wird), und Sicherheitsattribute gewünschten.

Um Zugriff auf Ressourcen kontrolliert CMutex -Objekte auf diese Weise erstellen Sie zunächst eine Variable des Typs CSingleLock oder CMultiLock in Ihre Ressource Zugriff Member-Funktion geben. 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.

Weitere Informationen über die Verwendung der CMutex -Objekte finden Sie im Artikel Multithreading: Verwendung die Synchronisierungsklassen im Visual C++ Programmer's Guide.

# include lt;afxmt.h>

Klasse&nmember |nbsp; Basisklasse | Hierarchiediagramm

Beispiel&Nbsp; MFC-Beispiel MUTEXE

Index