Condividi tramite


<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.

Hh921467.collapse_all(it-it,VS.110).gifClassi

Nome

Descrizione

classe di lock_guard

Rappresenta un modello che è possibile creare un'istanza per creare un oggetto di cui il distruttore sblocca mutex.

mutex Class (STL)

Rappresenta un tipo del mutex.Utilizzare gli oggetti di questo tipo per applicare l'esclusione reciproca con un programma.

classe di recursive_mutex

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.

classe di recursive_timed_mutex

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.

classe di timed_mutex

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.

classe di unique_lock

Rappresenta un modello che è possibile creare un'istanza per creare oggetti che gestiscono il blocco e sblocco di mutex.

Hh921467.collapse_all(it-it,VS.110).gifFunzioni

Nome

Descrizione

funzione call_once

Fornisce un meccanismo per chiamare un oggetto chiamabile specificato esattamente una volta durante l'esecuzione.

lock Funzioni

Tenta di bloccare tutti gli argomenti senza deadlock.

Hh921467.collapse_all(it-it,VS.110).gifStrutture

Nome

Descrizione

struttura di adopt_lock_t

Rappresenta un tipo utilizzato per definire adopt_lock.

struttura di defer_lock_t

Rappresenta un tipo che definisce un oggetto di defer_lock utilizzata per selezionare uno dei costruttori di overload di unique_lock.

struttura di once_flag

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.

struttura di try_to_lock_t

Rappresenta struct che definisce un oggetto di try_to_lock e viene utilizzato per selezionare uno dei costruttori di overload di unique_lock.

Hh921467.collapse_all(it-it,VS.110).gifVariabili.

Nome

Descrizione

variabile di adopt_lock

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.

variabile di defer_lock

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.

variabile di try_to_lock

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.

Vedere anche

Altre risorse

File di intestazione