funzione async
Rappresenta un provider asincrono.
template<class Fn, class... ArgTypes>
future<typename result_of<Fn(ArgTypes...)>::type>;
async(Fn&& fn, ArgTypes&&... args);
template<class Fn, class... ArgTypes>
future<typename result_of<Fn(ArgTypes...)>::type>;
async(launch policy, Fn&& fn, ArgTypes&&... args);
Parametri
- policy
Un valore di avvio.
Note
Definizioni delle abbreviazioni:
dfn |
La chiamata di decay_copy(forward<Fn>(fn)). |
dargs |
I risultati delle chiamate decay_copy(forward<ArgsTypes>(args…)). |
Ty |
Il tipo result_of<Fn(ArgTypes…)>::type. |
La prima funzione di modello restituisce async(launch::any, fn, args…).
La seconda funzione restituisce un oggetto di future<Ty> dello stato collegato asincrono utilizza un risultato insieme ai valori di dfn e di dargs e un oggetto thread per gestire un thread separato di esecuzione.
A meno che decay<Fn>::type sia un tipo diverso dall'avvio, la seconda funzione non partecipa alla risoluzione dell'.
Se policy è launch::any, la funzione potrebbe scegliere launch::async o launch::deferred.In questa implementazione, la funzione utilizza launch::async.
Se policy è launch::async, la funzione crea un thread che restituisce INVOKE(dfn, dargs..., Ty).Funzione restituisce dopo avere creato il thread senza attendere i risultati.Se il sistema non può iniziare un nuovo thread, la funzione genera system_error con un codice di errore resource_unavailable_try_again.
Se policy è launch::deferred, la funzione contrassegna il relativo stato asincrono connessi come utilizzare una funzione posticipata e restituisce.La prima chiamata a una funzione non temporizzata che è stato collegato asincrono per essere pronta in effetti chiama la funzione posticipata da INVOKE(dfn, dargs..., Ty)di valutazione.
In tutti i casi, lo stato asincrono collegato dell'oggetto di future non è impostato per attendere finché la valutazione di INVOKE(dfn, dargs…, Ty) non completi, generando un'eccezione o restituito correttamente.Il risultato dello stato asincrono collegato un'eccezione se si è stato generato, o qualsiasi valore restituito dalla valutazione.
La pseudo-funzione INVOKE è definita in <functional>.
Requisiti
Implementazioni diIntestazione:
Spazio dei nomi: deviazione standard