<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 promise
di classe , future
e 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 future
oggetto o l'ultimo shared_future
oggetto 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 . |