Condividi tramite


<future>

Includere l'intestazione <standard futura> per definire modelli di classe e modelli di supporto che semplificano l'esecuzione di una funzione, possibilmente in un thread separato, e il recupero del risultato. Quest'ultimo è il valore restituito dalla funzione o un'eccezione generata dalla funzione, ma non rilevata nella funzione.

Questa intestazione usa il runtime di concorrenza (ConcRT) in modo da essere utilizzabile con altri meccanismi ConcRT. Per altre informazioni su ConcRT, vedere Runtime di concorrenza.

Sintassi

#include <future>

Osservazioni:

Nota

Nel codice compilato tramite /clr questa intestazione è bloccata.

Un provider asincrono archivia il risultato di una chiamata di funzione. Un oggetto restituito asincrono viene usato per recuperare il risultato di una chiamata di funzione. Uno stato asincrono associato consente la comunicazione tra un provider asincrono e uno o più oggetti restituiti asincroni.

Un programma non crea direttamente alcun oggetto di stato asincrono associato. Il programma crea un provider asincrono ogni volta che ne è necessario uno e da questo crea un oggetto restituito asincrono che condivide il proprio stato asincrono associato con il provider. I provider asincroni e gli oggetti restituiti asincroni gestiscono gli oggetti che includono il relativo stato asincrono associato condiviso. Quando l'ultimo oggetto che fa riferimento allo stato asincrono associato lo rilascia, l'oggetto che include tale stato viene eliminato.

Un provider asincrono o un oggetto restituito asincrono privo di uno stato asincrono associato è vuoto.

Uno stato asincrono associato è ready solo se il provider asincrono ha archiviato un valore restituito o un'eccezione.

La funzione async modello e i modelli promise di classe e packaged_task sono provider asincroni. I modelli future di classe e shared_future descrivono gli oggetti restituiti asincroni.

Ognuno dei modelli promisedi classe , futuree shared_future ha una specializzazione per il tipo void e una specializzazione parziale per l'archiviazione e il recupero di un valore in base al riferimento. Queste specializzazioni si differenziano dal modello principale solo nelle firme e nella semantica delle funzioni che archiviano e recuperano il valore restituito.

I modelli future di classe e shared_future non bloccano mai nei distruttori, tranne in un caso mantenuto per la compatibilità con le versioni precedenti: a differenza di tutti gli altri futuri, per un futureoggetto o l'ultimo shared_futureoggetto collegato a un'attività avviata con std::async, il distruttore blocca se l'attività non è stata completata, ovvero blocca se il thread non ha ancora chiamato .get() o .wait() e l'attività è ancora in esecuzione. La nota sull'usabilità seguente è stata aggiunta alla descrizione di std::async nella bozza standard: "[Nota: Se un futuro ottenuto da std::async viene spostato all'esterno dell'ambito locale, è necessario tenere presente che il distruttore futuro potrebbe bloccare il blocco dello stato condiviso.—end note]" In tutti gli altri casi, future e shared_future i distruttori sono obbligatori e sono garantiti per non bloccare mai.

Membri

Classi

Nome Descrizione
Classe future Descrive un oggetto restituito asincrono.
Classe future_error Descrive un oggetto eccezione che può essere generato dai metodi dei tipi che gestiscono gli oggetti future.
Classe packaged_task Descrive un provider asincrono che è un wrapper di chiamata la cui firma di chiamata è Ty(ArgTypes...). Lo stato asincrono associato include una copia dell'oggetto chiamabile oltre al potenziale risultato.
Classe promise Descrive un provider asincrono.
Classe shared_future Descrive un oggetto restituito asincrono. Diversamente da un oggetto future, un provider asincrono può essere associato a un numero qualsiasi di oggetti shared_future.

Strutture

Nome Descrizione
Struttura is_error_code_enum Specializzazione che indica che future_errc è adatto per l'archiviazione di un oggetto error_code.
Struttura uses_allocator Specializzazione che restituisce sempre true.

Funzioni

Nome Descrizione
async Rappresenta un provider asincrono.
future_category Restituisce un riferimento all'oggetto error_category che caratterizza gli errori associati agli oggetti future.
make_error_code Crea un oggetto error_code che dispone dell'oggetto error_category che caratterizza gli errori future.
make_error_condition Crea un oggetto error_condition che dispone dell'oggetto error_category che caratterizza gli errori future.
swap Scambia lo stato asincrono associato di un oggetto promise con quello di un altro oggetto.

Enumerazioni

Nome Descrizione
future_errc Fornisce i nomi simbolici per tutti gli errori segnalati dalla classe future_error.
future_status Fornisce i nomi simbolici per i motivi che una funzione di attesa temporizzata può restituire.
lanciare Rappresenta un tipo di maschera di bit che descrive le possibili modalità per la funzione modello async.

Vedi anche

Riferimento file di intestazione