async — Funkcja
Reprezentuje asynchronicznego dostawcy.
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);
Parametry
- policy
A Uruchamianie wartość.
Uwagi
Definicje skróty:
dfn |
Wynik telefonicznej decay_copy(forward<Fn>(fn)). |
dargs |
Wyniki wywołania decay_copy(forward<ArgsTypes>(args…)). |
Ty |
Typ result_of<Fn(ArgTypes…)>::type. |
Pierwszy szablon funkcja zwraca async(launch::any, fn, args…).
Druga funkcja zwraca future<Ty> obiekt, którego asynchronicznego państwie stowarzyszonym posiada wynik wraz z wartością dfn i dargs i obiektu wątku do zarządzania oddzielnego wątku wykonywania.
O ile nie decay<Fn>::type jest typu innego niż uruchomienie, druga funkcja nie uczestniczy w przeciążeń z późnym wiązaniem.
If policy is launch::any, the function might choose launch::async or launch::deferred.W tej implementacji funkcja używa launch::async.
Jeśli policy jest launch::async, funkcja tworzy wątku, którego wynikiem jest INVOKE(dfn, dargs..., Ty).Funkcja zwraca po utworzeniu wątku nie czekając na wyniki.Jeśli system nie może rozpocząć nowy wątek, funkcja generuje system_error zawierającego kod błędu z resource_unavailable_try_again.
Jeśli policy jest launch::deferred, funkcja oznacza asynchronicznego-państwo stowarzyszone jako gospodarstwa odroczonego funkcja i zwraca.Pierwsze wywołanie do żadnej funkcji timed, który czeka na państwo stowarzyszone asynchronicznego będzie gotowa w efekcie wywołuje funkcję odroczonego poprzez ocenę INVOKE(dfn, dargs..., Ty).
We wszystkich przypadkach, asynchroniczny państwo stowarzyszone z future obiektu nie ustawiono wartości Gotowe aż do oceny INVOKE(dfn, dargs…, Ty) zakończeniu przez Zgłaszanie wyjątku lub przez zwrócenie normalnie.Wynik państwo stowarzyszone asynchroniczne jest wyjątek, jeżeli zgłoszony został jeden lub każdą wartość, która jest zwracana przez oceny.
[!UWAGA]
Dla future— lub ostatni shared_future— dołączony do zadania uruchomione z std::async, bloki destruktor, jeśli zadanie nie zostało ukończone; oznacza to, że blokuje Jeśli ten wątek nie jeszcze wywołana .get() lub .wait() i zadanie jest nadal uruchomione.Jeśli future uzyskane z std::async zostanie przeniesiony poza zakres lokalny, inny kod, który używa go muszą być świadomi, że jego destruktora może zablokować dla stanu udostępnionego do stanu gotowości.
Pseudo-funkcja INVOKE jest zdefiniowany w <functional>.
Wymagania
Nagłówek: przyszłych
Przestrzeń nazw: std