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