Condividi tramite


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

Vedi anche

Spazio dei nomi concurrency
Classe reader_writer_lock