Condividi tramite


Classe CComCriticalSection

Questa classe fornisce metodi per ottenere e rilasciare la proprietà di un oggetto sezione critica.

Sintassi

class CComCriticalSection

Membri

Costruttori pubblici

Nome Descrizione
CComCriticalSection::CComCriticalSection Costruttore.

Metodi pubblici

Nome Descrizione
CComCriticalSection::Init Crea e inizializza un oggetto sezione critico.
CComCriticalSection::Lock Ottiene la proprietà dell'oggetto sezione critica.
CComCriticalSection::Term Rilascia le risorse di sistema usate dall'oggetto sezione critica.
CComCriticalSection::Unlock Rilascia la proprietà dell'oggetto sezione critica.

Membri dati pubblici

Nome Descrizione
CComCriticalSection::m_sec Oggetto CRITICAL_SECTION.

Osservazioni:

CComCriticalSection è simile alla classe CComAutoCriticalSection, ad eccezione del fatto che è necessario inizializzare e rilasciare in modo esplicito la sezione critica.

In genere, si usa CComCriticalSection tramite il typedef nome CriticalSection. Questo nome fa CComCriticalSection riferimento quando viene usato CComMultiThreadModel .

Vedere CComCritSecLock Class (Classe CComCritSecLock) per un modo più sicuro per usare questa classe rispetto alla chiamata Lock diretta e Unlock diretta.

Requisiti

Intestazione: atlcore.h

CComCriticalSection::CComCriticalSection

Costruttore.

CComCriticalSection() throw();

Osservazioni:

Imposta il membro dati m_sec su NULL.

CComCriticalSection::Init

Chiama la funzione Win32 InitializeCriticalSection, che inizializza l'oggetto sezione critica contenuto nel membro dati m_sec .

HRESULT Init() throw();

Valore restituito

Restituisce S_OK in caso di esito positivo, E_OUTOFMEMORY o E_FAIL in caso di errore.

CComCriticalSection::Lock

Chiama la funzione Win32 EnterCriticalSection, che attende fino a quando il thread non può assumere la proprietà dell'oggetto sezione critico contenuto nel membro dati m_sec .

HRESULT Lock() throw();

Valore restituito

Restituisce S_OK in caso di esito positivo, E_OUTOFMEMORY o E_FAIL in caso di errore.

Osservazioni:

L'oggetto sezione critica deve prima essere inizializzato con una chiamata al metodo Init . Al termine dell'esecuzione del codice protetto, il thread deve chiamare Unlock per rilasciare la proprietà della sezione critica.

CComCriticalSection::m_sec

Contiene un oggetto sezione critico utilizzato da tutti i CComCriticalSection metodi.

CRITICAL_SECTION m_sec;

CComCriticalSection::Term

Chiama la funzione Win32 DeleteCriticalSection, che rilascia tutte le risorse usate dall'oggetto sezione critica contenuto nel membro dati m_sec .

HRESULT Term() throw();

Valore restituito

Restituisce S_OK.

Osservazioni:

Una volta Term chiamato, la sezione critica non può più essere usata per la sincronizzazione.

CComCriticalSection::Unlock

Chiama la funzione Win32 LeaveCriticalSection, che rilascia la proprietà dell'oggetto sezione critica contenuto nel membro dati m_sec .

HRESULT Unlock() throw();

Valore restituito

Restituisce S_OK.

Osservazioni:

Per ottenere prima la proprietà, il thread deve chiamare il metodo Lock . Ogni chiamata a Lock richiede una chiamata corrispondente a Unlock per rilasciare la proprietà della sezione critica.

Vedi anche

Classe CComFakeCriticalSection
Cenni preliminari sulla classe
Classe CComCritSecLock