Condividi tramite


Classe di 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

h5zew56b.collapse_all(it-it,VS.110).gifCostruttori pubblici

Nome

Descrizione

CCriticalSection::CCriticalSection

Costruisce un oggetto CCriticalSection.

h5zew56b.collapse_all(it-it,VS.110).gifMetodi pubblici

Nome

Descrizione

CCriticalSection::Lock

Utilizzare per accedere all'oggetto CCriticalSection.

CCriticalSection::Unlock

Rilascia l'oggetto CCriticalSection.

h5zew56b.collapse_all(it-it,VS.110).gifOperatori pubblici

Nome

Descrizione

CCriticalSection::operator CRITICAL_SECTION*

Recupera un puntatore all'interno CRITICAL_SECTION.

h5zew56b.collapse_all(it-it,VS.110).gifMembri 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 di CSyncObject

Grafico della gerarchia

Classe di CMutex