asynchronní funkce
Představuje asynchronní zprostředkovatele.
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 spuštění hodnotu.
Poznámky
Definice zkratek:
dfn |
Výsledek volání decay_copy(forward<Fn>(fn)). |
dargs |
Výsledky volání decay_copy(forward<ArgsTypes>(args…)). |
Ty |
The type result_of<Fn(ArgTypes…)>::type. |
První šablona vrátí async(launch::any, fn, args…).
Druhá funkce vrací future<Ty> objekt, jehož spojené asynchronního stavu obsahuje výsledek spolu s hodnotami dfn a dargs a objekt vlákna ke správě samostatný podproces provádění.
Není-li decay<Fn>::type je typ než spuštění, druhá funkce není součástí procedury s pozdní vazbou.
If policy is launch::any, the function might choose launch::async or launch::deferred.V této implementaci funkce, která používá launch::async.
Pokud policy je launch::async, funkce vytvoří podproces, který je vyhodnocen jako INVOKE(dfn, dargs..., Ty).Po vytvoření vlákna bez čekání na výsledky, vrátí funkce.Pokud systém nelze spustit nové vlákno, vyvolá funkci system_error , který má kód chyby resource_unavailable_try_again.
Pokud policy je launch::deferred, funkce označí jeho přidruženým státem asynchronní jako hospodářství odložené funkce a vrátí.První volání funkce bez časového omezení, kterou čeká přidružené asynchronní státu platit připraven, volá funkci odloženého vyhodnocením INVOKE(dfn, dargs..., Ty).
Ve všech případech přidružené asynchronního stavu future objekt není nastaven na připraven do hodnocení INVOKE(dfn, dargs…, Ty) dokončení vyvolání výjimky nebo vrácení normálně.Výsledek přidruženým státem asynchronní je výjimka, pokud jedna výjimka nebo hodnotu, která je vrácena pomocí hodnocení.
Pseudo-function INVOKE je definována v <functional>.
Požadavky
Záhlaví: budoucí
Obor názvů: std