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
Costruttori pubblici
Nome |
Descrizione |
---|---|
Costruisce un oggetto CCriticalSection. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Utilizzare per accedere all'oggetto CCriticalSection. |
|
Rilascia l'oggetto CCriticalSection. |
Operatori pubblici
Nome |
Descrizione |
---|---|
Recupera un puntatore all'interno CRITICAL_SECTION. |
Membri dati pubblici
Nome |
Descrizione |
---|---|
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à
CCriticalSection
Requisiti
Header: afxmt.h