Megosztás a következőn keresztül:


CComCriticalSection osztály

Megjegyzés:

Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Ez az osztály metódusokat biztosít egy kritikus szakaszobjektum tulajdonjogának beszerzéséhez és kiadásához.

Szemantika

class CComCriticalSection

Tagok

Nyilvános konstruktorok

Név Description
CComCriticalSection::CComCriticalSection A konstruktor.

Nyilvános módszerek

Név Description
CComCriticalSection::Init Kritikus szakaszobjektumot hoz létre és inicializál.
CComCriticalSection::Lock Megszerezi a kritikus szakaszobjektum tulajdonjogát.
CComCriticalSection::Term Felszabadítja a kritikus szakaszobjektum által használt rendszererőforrásokat.
CComCriticalSection::Unlock Felszabadítja a kritikus szakaszobjektum tulajdonjogát.

Nyilvános adatok tagjai

Név Description
CComCriticalSection::m_sec Egy CRITICAL_SECTION objektum.

Megjegyzések

CComCriticalSection hasonló a CComAutoCriticalSection osztályhoz, azzal a kivételével, hogy explicit módon inicializálnia kell és fel kell szabadítania a kritikus szakaszt.

Általában a typedefCriticalSection nevet használjaCComCriticalSection. Ez a név a CComMultiThreadModel használatakor hivatkozikCComCriticalSection.

A CComCritSecLock osztályban biztonságosabban használhatja ezt az osztályt, mint a hívás és Unlock a közvetlen használatLock.

Requirements

Fejléc: atlcore.h

CComCriticalSection::CComCriticalSection

A konstruktor.

CComCriticalSection() throw();

Megjegyzések

A m_sec adattagot NULL értékre állítja.

CComCriticalSection::Init

Meghívja az InitializeCriticalSection Win32 függvényt, amely inicializálja a m_sec adattagban található kritikus szakaszobjektumot.

HRESULT Init() throw();

Visszaadott érték

Sikeres, E_OUTOFMEMORY vagy sikertelen E_FAIL S_OK ad vissza.

CComCriticalSection::Lock

Meghívja az EnterCriticalSection Win32 függvényt, amely megvárja, amíg a szál átveszi a m_sec adattagban található kritikus szakaszobjektum tulajdonjogát.

HRESULT Lock() throw();

Visszaadott érték

Sikeres, E_OUTOFMEMORY vagy sikertelen E_FAIL S_OK ad vissza.

Megjegyzések

A kritikus szakaszobjektumot először inicializálni kell az Init metódus hívásával. Ha a védett kód végrehajtása befejeződött, a szálnak fel kell hívnia az Unlock metódust a kritikus szakasz tulajdonjogának felszabadításához.

CComCriticalSection::m_sec

Az összes CComCriticalSection metódus által használt kritikus szakaszobjektumot tartalmazza.

CRITICAL_SECTION m_sec;

CComCriticalSection::Term

Meghívja a Win32 függvény DeleteCriticalSection függvényét, amely felszabadítja az m_sec adattagban található kritikus szakaszobjektum által használt összes erőforrást.

HRESULT Term() throw();

Visszaadott érték

S_OK ad vissza.

Megjegyzések

A meghívás után Term a kritikus szakasz már nem használható szinkronizálásra.

CComCriticalSection::Unlock

Meghívja a Win32 függvényt, a LeaveCriticalSection függvényt, amely felszabadítja a m_sec adattagban található kritikus szakaszobjektum tulajdonjogát.

HRESULT Unlock() throw();

Visszaadott érték

S_OK ad vissza.

Megjegyzések

A tulajdonjog megszerzéséhez a szálnak meg kell hívnia a Zárolás metódust. Minden híváshoz Lock szükség van egy megfelelő hívásra a Unlock kritikus szakasz tulajdonjogának felszabadításához.

Lásd még

CComFakeCriticalSection osztály
osztály áttekintése
CComCritSecLock osztály