<mutex>
Includere l'intestazione standard <mutex> per definire le classi mutex, recursive_mutex, timed_mutexe recursive_timed_mutex; i modelli lock_guard e unique_lock; e tipi e funzioni di supporto che definiscono aree di codice a esclusione reciproca.
Questa intestazione utilizza il runtime di concorrenza (ConcRT) poterlo utilizzare con altri meccanismi ConcRT.Per ulteriori informazioni su ConcRT, vedere Runtime di concorrenza.
#include <mutex>
Note
[!NOTA]
Nel codice compilato utilizzando /clr o /clr:pure, questa intestazione è bloccata.
Le classi mutex e recursive_mutex sono tipi del mutex.Un tipo di mutex dispone di un costruttore predefinito e un distruttore non genera eccezioni.Questi oggetti sono metodi che forniscono l'esclusione reciproca quando più thread tentano di bloccare lo stesso oggetto.In particolare, un tipo di mutex contiene metodi lock, try_locke unlock:
Il metodo di lock blocca il thread chiamante finché il thread non ottenere la proprietà del mutex.Il valore restituito viene ignorato.
Il metodo di try_lock tenta di ottenere la proprietà del mutex senza bloccarsi.Il tipo restituito è convertibile in bool e viene true se il metodo ottiene la proprietà, ma potrebbe altrimenti false.
Il metodo di unlock rilascia la proprietà del mutex dal thread chiamante.
È possibile utilizzare i tipi di mutex come argomenti di tipo per creare un'istanza dei modelli lock_guard e unique_lock.È possibile utilizzare gli oggetti di questi tipi come argomento di Lock alle funzioni membro di attesa nel modello condition_variable_any.
Un tipo timeout del mutex soddisfi i requisiti per un tipo del mutex.Inoltre, dispongono di metodi di try_lock_until e di try_lock_for che devono essere richiamabili tramite un argomento e restituire il tipo che è convertibile in bool.Un tipo timeout del mutex può definire queste funzioni utilizzando argomenti aggiuntivi, a condizione che gli argomenti aggiuntivi tutti dispongono di valori predefiniti.
Il metodo di try_lock_for è necessario essere chiamato utilizzando un argomento, Rel_time, il cui tipo è una creazione di istanze di chrono::duration.Il metodo tenta di ottenere la proprietà del mutex, ma restituisce i limiti di tempo definito da Rel_time, indipendentemente da positivo.La conversione del valore restituito a true se il metodo ottiene la proprietà; in caso contrario, la conversione del valore restituito a false.
Il metodo di try_lock_until è necessario essere chiamato utilizzando un argomento, Abs_time, il cui tipo è una creazione di istanze di chrono::time_point.Il metodo tenta di ottenere non più avanti la proprietà del mutex, ma restituisce il tempo definito da Abs_time, indipendentemente da positivo.La conversione del valore restituito a true se il metodo ottiene la proprietà; in caso contrario, la conversione del valore restituito a false.
Un tipo di mutex anche come tipo bloccabile.Se non fornisce la funzione membro try_lock, è un tipo bloccabile di base.Un tipo timeout del mutex anche come tipo bloccabile timeout.
Classi
Nome |
Descrizione |
---|---|
Rappresenta un modello che è possibile creare un'istanza per creare un oggetto di cui il distruttore sblocca mutex. |
|
Rappresenta un tipo del mutex.Utilizzare gli oggetti di questo tipo per applicare l'esclusione reciproca con un programma. |
|
Rappresenta un tipo del mutex.In constrast alla classe di mutex, il comportamento dei metodi di chiamata di blocco per gli oggetti che sono già stati bloccati è ben definito. |
|
Rappresenta un determinato tipo del mutex.Utilizzare gli oggetti di questo tipo per applicare l'esclusione reciproca con blocco limitato nel tempo con un programma.A differenza degli oggetti di tipo timed_mutex, l'effetto di chiamare i metodi di blocco per gli oggetti di recursive_timed_mutex è ben definito. |
|
Rappresenta un determinato tipo del mutex.Utilizzare gli oggetti di questo tipo per applicare l'esclusione reciproca con blocco limitato nel tempo con un programma. |
|
Rappresenta un modello che è possibile creare un'istanza per creare oggetti che gestiscono il blocco e sblocco di mutex. |
Funzioni
Nome |
Descrizione |
---|---|
Fornisce un meccanismo per chiamare un oggetto chiamabile specificato esattamente una volta durante l'esecuzione. |
|
Tenta di bloccare tutti gli argomenti senza deadlock. |
Strutture
Nome |
Descrizione |
---|---|
Rappresenta un tipo utilizzato per definire adopt_lock. |
|
Rappresenta un tipo che definisce un oggetto di defer_lock utilizzata per selezionare uno dei costruttori di overload di unique_lock. |
|
Rappresenta struct utilizzato con la funzione call_once del modello per garantire che il codice di inizializzazione venga chiamato una sola volta, anche in presenza di più thread di esecuzione. |
|
Rappresenta struct che definisce un oggetto di try_to_lock e viene utilizzato per selezionare uno dei costruttori di overload di unique_lock. |
Variabili.
Nome |
Descrizione |
---|---|
Rappresenta un oggetto che può essere passato a costruttori per lock_guard e unique_lock per indicare che il mutex oggetto che anche vengono passate al costruttore è bloccato. |
|
Rappresenta un oggetto che può essere passato al costruttore per unique_lock, per indicare che il costruttore non deve bloccare un oggetto mutex che sta passando. |
|
Rappresenta un oggetto che può essere passato al costruttore per unique_lock indicare che il costruttore deve tentare di sbloccare mutex che sta passando un valore senza blocco. |