Share via


非同步處理函式

表示非同步 提供者。

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

參數

備註

縮寫的定義:

dfn

呼叫 decay_copy(forward<Fn>(fn))的結果。

dargs

呼叫 decay_copy(forward<ArgsTypes>(args…))的結果。

Ty

型別為 result_of<Fn(ArgTypes…)>::type。

第一個樣板函式會傳回 async(launch::any, fn, args…)。

第二個函式傳回相關聯 的非同步狀態 與 dfn 和 dargs 值和執行緒物件一起保存一個結果處理執行個別執行緒的 future<Ty> 物件。

除了啟動之外,除非 decay<Fn>::type 是型別,第二個函式不參與多載解析。

如果 policy 是 launch::any,函式會選取 launch::asynclaunch::deferred。 在這個實作中,使用 launch::async函式。

如果 policy 是 launch::async,函式會建立該執行緒評估 INVOKE(dfn, dargs..., Ty)。 在建立執行緒,而不等待結果之後,函式會傳回。 如果系統無法啟動新執行緒,具有 resource_unavailable_try_again錯誤碼的函式會擲回 system_error

如果 policy 是 launch::deferred,函式將其相關聯的非同步狀態,因為保留延後 函式 並傳回。 out 實際等候這個關聯的非同步狀態為就緒的所有非計時函式的呼叫所評估的 INVOKE(dfn, dargs..., Ty)呼叫延後的函式。

在所有情況下, future 物件的相關聯的非同步狀態未設定 準備 ,直到 INVOKE(dfn, dargs…, Ty) 的評估完成,藉由擲回例外狀況或透過一般傳回。 將相關的非同步狀態的結果是例外狀況,則會擲回,或是由這項評估所傳回的任何值。

提供 INVOKE 函式在 <functional>中定義。

需求

標題: 未來

命名空間: 可以

請參閱

參考

<future>

result_of Class

未來的類別

其他資源

標頭檔