Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'esclusione reciproca non rientrante che tiene conto in modo esplicito del runtime di concorrenza.
Sintassi
class critical_section;
Membri
Typedef pubblici
| Nome | Descrizione |
|---|---|
native_handle_type |
Riferimento a un oggetto critical_section. |
Classi pubbliche
| Nome | Descrizione |
|---|---|
| Classe critical_section::scoped_lock | Wrapper RAII sicuro per un critical_section oggetto. |
Costruttori pubblici
| Nome | Descrizione |
|---|---|
| critical_section | Costruisce una nuova sezione critica. |
| Distruttore ~critical_section | Elimina una sezione critica. |
Metodi pubblici
| Nome | Descrizione |
|---|---|
| lock | Acquisisce questa sezione critica. |
| native_handle | Restituisce un handle nativo specifico della piattaforma, se presente. |
| try_lock | Prova ad acquisire il blocco senza bloccare. |
| try_lock_for | Tenta di acquisire il blocco senza bloccarsi per un numero specifico di millisecondi. |
| unlock | Sblocca la sezione critica. |
Osservazioni:
Per altre informazioni, vedere Strutture dei dati di sincronizzazione.
Gerarchia di ereditarietà
critical_section
Requisiti
Intestazione: concrt.h
Spazio dei nomi: Concurrency
critical_section
Costruisce una nuova sezione critica.
critical_section();
~critical_section
Elimina una sezione critica.
~critical_section();
Osservazioni:
È previsto che il blocco non venga più mantenuto quando viene eseguito il distruttore. Se si consente alla sezione critica di destruire con il blocco, il comportamento non definito risulta invariato.
lock
Acquisisce questa sezione critica.
void lock();
Osservazioni:
Spesso è più sicuro utilizzare il costrutto scoped_lock per acquisire e rilasciare un critical_section oggetto in modo sicuro.
Se il blocco è già mantenuto dal contesto chiamante, verrà generata un'eccezione improper_lock .
native_handle
Restituisce un handle nativo specifico della piattaforma, se presente.
native_handle_type native_handle();
Valore restituito
Riferimento alla sezione critica.
Osservazioni:
Un critical_section oggetto non è associato a un handle nativo specifico della piattaforma per il sistema operativo Windows. Il metodo restituisce semplicemente un riferimento all'oggetto stesso.
Classe critical_section::scoped_lock
Wrapper RAII sicuro per un critical_section oggetto.
class scoped_lock;
scoped_lock::scoped_lock
Costruisce un scoped_lock oggetto e acquisisce l'oggetto critical_section passato nel _Critical_section parametro . Se la sezione critica è contenuta in un altro thread, questa chiamata verrà bloccata.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Parametri
_Critical_section
Sezione critica da bloccare.
scoped_lock::~scoped_lock
Elimina definitivamente un scoped_lock oggetto e rilascia la sezione critica fornita nel relativo costruttore.
~scoped_lock();
try_lock
Prova ad acquisire il blocco senza bloccare.
bool try_lock();
Valore restituito
Se il blocco è stato acquisito, il valore true; in caso contrario, il valore false.
try_lock_for
Tenta di acquisire il blocco senza bloccarsi per un numero specifico di millisecondi.
bool try_lock_for(unsigned int _Timeout);
Parametri
_Timeout
Numero di millisecondi che si devono attendere prima del timeout.
Valore restituito
Se il blocco è stato acquisito, il valore true; in caso contrario, il valore false.
unlock
Sblocca la sezione critica.
void unlock();