Sdílet prostřednictvím


CComAutoCriticalSection – třída

Tato třída poskytuje metody pro získání a uvolnění vlastnictví kritického objektu oddílu.

Syntaxe

class CComCriticalSection

Členové

Veřejné konstruktory

Název Popis
CComCriticalSection::CComCriticalSection Konstruktor

Veřejné metody

Název Popis
CComCriticalSection::Init Vytvoří a inicializuje objekt kritického oddílu.
CComCriticalSection::Lock Získá vlastnictví objektu kritického oddílu.
CComCriticalSection::Term Uvolní systémové prostředky používané objektem kritického oddílu.
CComCriticalSection::Unlock Uvolní vlastnictví objektu kritického oddílu.

Veřejné datové členy

Název Popis
CComCriticalSection::m_sec Objekt CRITICAL_SECTION.

Poznámky

CComCriticalSection je podobná třídě CComAutoCriticalSection, s tím rozdílem, že musíte explicitně inicializovat a uvolnit kritickou část.

Obvykle se používá prostřednictvím CComCriticalSection typedef názvu CriticalSection. Tento název odkazuje CComCriticalSection při použití modelu CComMultiThreadModel .

Viz CComCritSecLock Třída bezpečnější způsob použití této třídy než volání Lock a Unlock přímo.

Požadavky

Hlavička: atlcore.h

CComCriticalSection::CComCriticalSection

Konstruktor

CComCriticalSection() throw();

Poznámky

Nastaví datový člen m_sec na hodnotu NULL.

CComCriticalSection::Init

Volá funkci Win32 InitializeCriticalSection, která inicializuje kritický objekt oddílu obsažený v datovém členu m_sec .

HRESULT Init() throw();

Návratová hodnota

Vrátí S_OK při úspěchu, E_OUTOFMEMORY nebo E_FAIL při selhání.

CComCriticalSection::Lock

Volá funkci Win32 EnterCriticalSection, která čeká, až vlákno může převzít vlastnictví kritického objektu oddílu obsaženého v m_sec datovém členu.

HRESULT Lock() throw();

Návratová hodnota

Vrátí S_OK při úspěchu, E_OUTOFMEMORY nebo E_FAIL při selhání.

Poznámky

Objekt kritického oddílu musí být nejprve inicializován voláním inicializační metody. Po dokončení provádění chráněného kódu musí vlákno volat Odemknout , aby uvolnilo vlastnictví kritické části.

CComCriticalSection::m_sec

Obsahuje objekt kritického oddílu, který se používá všemi CComCriticalSection metodami.

CRITICAL_SECTION m_sec;

CComCriticalSection::Term

Volá funkci Win32 DeleteCriticalSection, která uvolní všechny prostředky používané kritickým objektem oddílu obsaženým v datovém členu m_sec.

HRESULT Term() throw();

Návratová hodnota

Vrátí S_OK.

Poznámky

Po Term zavolání už nelze kritickou část použít k synchronizaci.

CComCriticalSection::Unlock

Volá funkci Win32 LeaveCriticalSection, která uvolní vlastnictví kritického objektu oddílu obsaženého v datovém členu m_sec .

HRESULT Unlock() throw();

Návratová hodnota

Vrátí S_OK.

Poznámky

Pro první získání vlastnictví musí vlákno volat Lock metoda. Každé volání Lock vyžaduje odpovídající volání k Unlock uvolnění vlastnictví kritického oddílu.

Viz také

CComFakeCriticalSection – třída
Přehled třídy
CComCritSecLock – třída