Udostępnij za pośrednictwem


Klasa CComCriticalSection

Ta klasa udostępnia metody uzyskiwania i zwalniania własności obiektu sekcji krytycznej.

Składnia

class CComCriticalSection

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CComCriticalSection::CComCriticalSection Konstruktor.

Metody publiczne

Nazwa/nazwisko opis
CComCriticalSection::Init Tworzy i inicjuje obiekt sekcji krytycznej.
CComCriticalSection::Lock Uzyskuje własność obiektu sekcji krytycznej.
CComCriticalSection::Term Zwalnia zasoby systemowe używane przez obiekt sekcji krytycznej.
CComCriticalSection::Unlock Zwalnia własność obiektu sekcji krytycznej.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CComCriticalSection::m_sec Obiekt CRITICAL_SECTION.

Uwagi

CComCriticalSection jest podobny do klasy CComAutoCriticalSection, z tą różnicą, że należy jawnie zainicjować i zwolnić sekcję krytyczną.

Zazwyczaj używasz CComCriticalSection typedef nazwy CriticalSection. Ta nazwa odwołuje się CComCriticalSection do używanego modelu CComMultiThreadModel .

Zobacz Klasa CComCritSecLock, aby uzyskać bezpieczniejszy sposób używania tej klasy niż wywoływanie Lock i Unlock bezpośrednie.

Wymagania

Nagłówek: atlcore.h

CComCriticalSection::CComCriticalSection

Konstruktor.

CComCriticalSection() throw();

Uwagi

Ustawia element członkowski m_sec danych na wartość NULL.

CComCriticalSection::Init

Wywołuje funkcję Win32 InitializeCriticalSection, która inicjuje obiekt sekcji krytycznej zawarty w elemencie danych m_sec .

HRESULT Init() throw();

Wartość zwracana

Zwraca S_OK powodzenia, E_OUTOFMEMORY lub E_FAIL w przypadku niepowodzenia.

CComCriticalSection::Lock

Wywołuje funkcję Win32 EnterCriticalSection, która czeka, aż wątek może przejąć własność obiektu sekcji krytycznej zawartego w składowej danych m_sec .

HRESULT Lock() throw();

Wartość zwracana

Zwraca S_OK powodzenia, E_OUTOFMEMORY lub E_FAIL w przypadku niepowodzenia.

Uwagi

Obiekt sekcji krytycznej musi najpierw zostać zainicjowany za pomocą wywołania metody Init . Po zakończeniu wykonywania chronionego kodu wątek musi wywołać metodę Unlock , aby zwolnić własność sekcji krytycznej.

CComCriticalSection::m_sec

Zawiera obiekt sekcji krytycznej, który jest używany przez wszystkie CComCriticalSection metody.

CRITICAL_SECTION m_sec;

CComCriticalSection::Term

Wywołuje funkcję Win32 DeleteCriticalSection, która zwalnia wszystkie zasoby używane przez obiekt sekcji krytycznej zawartej w elemencie danych m_sec .

HRESULT Term() throw();

Wartość zwracana

Zwraca S_OK.

Uwagi

Po Term wywołaniu sekcji krytycznej nie można już używać do synchronizacji.

CComCriticalSection::Unlock

Wywołuje funkcję Win32 LeaveCriticalSection, która zwalnia własność obiektu sekcji krytycznej zawartego w elemencie danych m_sec .

HRESULT Unlock() throw();

Wartość zwracana

Zwraca S_OK.

Uwagi

Aby najpierw uzyskać własność, wątek musi wywołać metodę Lock . Każde wywołanie Lock wymaga odpowiedniego wywołania do Unlock wydania własności sekcji krytycznej.

Zobacz też

Klasa CComFakeCriticalSection
Omówienie klasy
Klasa CComCritSecLock