Classe critical_section
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();