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