CComCriticalSection-Klasse
Diese Klasse stellt Methoden zum Abrufen und Freigeben des Besitzes eines kritischen Abschnittsobjekts bereit.
Syntax
class CComCriticalSection
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CComCriticalSection::CComCriticalSection | Der Konstruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CComCriticalSection::Init | Erstellt und initialisiert ein kritisches Abschnittsobjekt. |
CComCriticalSection::Lock | Ruft den Besitz des kritischen Abschnittsobjekts ab. |
CComCriticalSection::Term | Gibt Systemressourcen frei, die vom kritischen Abschnittsobjekt verwendet werden. |
CComCriticalSection::Unlock | Gibt den Besitz des kritischen Abschnittsobjekts frei. |
Öffentliche Datenmember
Name | Beschreibung |
---|---|
CComCriticalSection::m_sec | Ein CRITICAL_SECTION-Objekt. |
Hinweise
CComCriticalSection
ist mit der Klasse CComAutoCriticalSection vergleichbar, mit der Ausnahme, dass Sie den kritischen Abschnitt explizit initialisieren und freigeben müssen.
In der Regel verwenden CComCriticalSection
Sie den typedef
Namen CriticalSection. Dieser Name verweist auf CComCriticalSection
, wenn CComMultiThreadModel verwendet wird.
Unter CComCritSecLock-Klasse finden Sie eine sicherere Möglichkeit, diese Klasse zu verwenden als aufrufen Lock
und Unlock
direkt zu verwenden.
Anforderungen
Header: atlcore.h
CComCriticalSection::CComCriticalSection
Der Konstruktor.
CComCriticalSection() throw();
Hinweise
Legt den m_sec-Datenmemm auf NULL fest.
CComCriticalSection::Init
Ruft die Win32-Funktion InitializeCriticalSection auf, die das kritische Abschnittsobjekt initialisiert, das im m_sec-Datenelement enthalten ist.
HRESULT Init() throw();
Rückgabewert
Gibt S_OK bei Erfolg, E_OUTOFMEMORY oder E_FAIL bei Fehlern zurück.
CComCriticalSection::Lock
Ruft die Win32-Funktion EnterCriticalSection auf, die wartet, bis der Thread den Besitz des kritischen Abschnittsobjekts übernehmen kann, das im m_sec-Datenmemm enthalten ist.
HRESULT Lock() throw();
Rückgabewert
Gibt S_OK bei Erfolg, E_OUTOFMEMORY oder E_FAIL bei Fehlern zurück.
Hinweise
Das kritische Abschnittsobjekt muss zuerst mit einem Aufruf der Init-Methode initialisiert werden. Wenn der geschützte Code die Ausführung abgeschlossen hat, muss der Thread die Entsperrung aufrufen, um den Besitz des kritischen Abschnitts freizugeben.
CComCriticalSection::m_sec
Enthält ein kritisches Abschnittsobjekt, das von allen CComCriticalSection
Methoden verwendet wird.
CRITICAL_SECTION m_sec;
CComCriticalSection::Term
Ruft die Win32-Funktion DeleteCriticalSection auf, die alle Ressourcen freigibt, die vom kritischen Abschnittsobjekt verwendet werden, das im m_sec-Datenmemm enthalten ist.
HRESULT Term() throw();
Rückgabewert
Gibt S_OK zurück.
Hinweise
Nachdem Term
der kritische Abschnitt aufgerufen wurde, kann der kritische Abschnitt nicht mehr für die Synchronisierung verwendet werden.
CComCriticalSection::Unlock
Ruft die Win32-Funktion LeaveCriticalSection auf, die den Besitz des kritischen Abschnittsobjekts freigibt, das im m_sec-Datenmemm enthalten ist.
HRESULT Unlock() throw();
Rückgabewert
Gibt S_OK zurück.
Hinweise
Zum ersten Abrufen des Besitzes muss der Thread die Lock-Methode aufrufen. Jeder Aufruf erfordert einen entsprechenden Aufruf Lock
, um Unlock
den Besitz des kritischen Abschnitts freizugeben.
Siehe auch
CComFakeCriticalSection-Klasse
Klassenübersicht
CComCritSecLock-Klasse