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