async-Funktion

Stellt einen asynchronen Anbieter dar.

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);

Parameter

Hinweise

Definitionen von Abkürzungen:

dfn

Das Ergebnis des Aufrufens von decay_copy(forward<Fn>(fn)).

dargs

Die Ergebnisse der Aufrufe decay_copy(forward<ArgsTypes>(args…)).

Ty

Der Typ result_of<Fn(ArgTypes…)>::type.

Die erste Vorlagenfunktion gibt async(launch::any, fn, args…) zurück.

Die zweite Funktion future<Ty> gibt ein Objekt zurück, dessen zugeordneter asynchroner Zustand ein Ergebnis zusammen mit den Werten von dfn und von dargs und einem Threadobjekt enthält, um einen separaten Ausführungsthread zu verwalten.

Es sei denn, decay<Fn>::type ein anderer Typ als Start ist, die zweite Funktion nicht an der Überladungsauflösung beteiligt.

Wenn policylaunch::any ausgewählt ist, kann die Funktion launch::async oder launch::deferred aus.In dieser Implementierung verwendet die Funktion launch::async.

Wenn policylaunch::async ist, erstellt die Funktion einen Thread, der INVOKE(dfn, dargs..., Ty) ergibt.Die - Funktion gibt zurück, nachdem sie den Thread ohne Warteergebnisse erstellt.Wenn das System einen neuen Thread kann nicht gestartet werden, führt die Funktion system_error aus, die einen Fehlercode von resource_unavailable_try_again verfügt.

Wenn policylaunch::deferred ist, markiert die Funktion ihren zugeordneten asynchronen Zustand als Aktivieren einer verzögerten Funktion und gibt zurück.Der erste Aufruf von jeder nicht-zeitgesteuerten Funktion, die auf den zugeordneten asynchronen Zustand wartet, um bereit ist gültig, ruft die verzögerte Funktion auf, indem INVOKE(dfn, dargs..., Ty) ergibt.

In allen Fällen wird der zugeordnete asynchrone Zustand des Objekts future nicht festgelegt, um vorzubereiten, bis die Auswertung von INVOKE(dfn, dargs…, Ty), entweder abgeschlossen wird, indem eine Ausnahme auslöst oder indem sie normalerweise zurückgibt.Das Ergebnis des zugeordneten asynchronen Zustands ist eine Ausnahme, wenn von ausgelöst wurde, oder jeder Wert, der von der Auswertung zurückgegeben wird.

Die PseudoFunktion INVOKE wird in <functional> definiert.

Anforderungen

Header: Zukunft

Namespace: std

Siehe auch

Referenz

<future>

result_of Class

future-Klasse

Weitere Ressourcen

Headerdateien