Condividi tramite


Classe CCriticalSection

Rappresenta una sezione critica" — un oggetto di sincronizzazione che consente a un thread per volta l'accesso a una risorsa o una sezione di codice.

class CCriticalSection : public CSyncObject

Membri

Costruttori pubblici

Nome

Descrizione

CCriticalSection::CCriticalSection

Costruisce un oggetto CCriticalSection.

Metodi pubblici

Nome

Descrizione

CCriticalSection::Lock

Utilizzare per accedere all'oggetto CCriticalSection.

CCriticalSection::Unlock

Rilascia l'oggetto CCriticalSection.

Operatori pubblici

Nome

Descrizione

CCriticalSection::operator CRITICAL_SECTION*

Recupera un puntatore all'interno CRITICAL_SECTION.

Membri dati pubblici

Nome

Descrizione

CCriticalSection::m_sect

Un oggetto CRITICAL_SECTION.

Note

Le sezioni critiche sono utili quando un solo thread alla volta può essere consentito modificare i dati o un'altra risorsa controllata. Ad esempio, aggiungere nodi a un elenco collegato è un processo che deve essere consentito solo da un thread alla volta. Utilizzando un oggetto CCriticalSection per controllare l'elenco collegato, solo un thread alla volta può accedere all'elenco.

Nota

La funzionalità di classe CCriticalSection viene fornita da un oggetto effettivo di Win32 CRITICAL_SECTION.

Le sezioni critiche vengono utilizzate anziché i mutex (vedere) CMutexquando la velocità è critico e la risorsa non verrà utilizzata nei limiti dei processi.

Esistono due metodi per l'utilizzo di un oggetto CCriticalSection : autonomo e incorporato in una classe.

  • Il metodo autonomo per utilizzare un oggetto autonomo CCriticalSection, costruire l'oggetto CCriticalSection quando necessario. Dopo che una corrispondenza ritorno dal costruttore, in modo esplicito blocca l'oggetto con una chiamata a blocco. Chiamare Sblocca al termine di accedere alla sezione critica. Questo metodo, mentre pulita che qualcuno che legge il codice sorgente, è ad errori più soggetto ad esempio è necessario ricordare bloccare e sbloccare la sezione critica prima e dopo l'accesso.

    Un metodo più congeniale è utilizzare la classe CSingleLock. È inoltre disponibile un metodo Unlock e Lock, ma non è necessario preoccuparsi per sbloccare la risorsa se si verifica un'eccezione.

  • Metodo incorporato è inoltre possibile condividere una classe con più thread aggiungendo un membro dati tipo CCriticalSectionalla classe e bloccando il membro dati quando necessario.

Per ulteriori informazioni sull'utilizzo degli oggetti CCriticalSection, vedere l'articolo multithreading: Utilizzo delle classi di sincronizzazione.

Gerarchia di ereditarietà

CObject

CSyncObject

CCriticalSection

Requisiti

Header: afxmt.h

Vedere anche

Riferimenti

Classe CSyncObject

Grafico delle gerarchie

Classe CMutex