async 関数
非同期プロバイダーを表します。
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);
パラメーター
- policy
開始 の値。
解説
:省略の定義
dfn |
decay_copy(forward<Fn>(fn))を呼び出した結果。 |
dargs |
呼び出し decay_copy(forward<ArgsTypes>(args…))の結果。 |
Ty |
result_of<Fn(ArgTypes…)>::type 型。 |
一つ目のテンプレート関数は、async(launch::any, fn, args…)を返します。
2 番目の関数は、実装の別のスレッドを管理する関連 の非同期状態がdfn と dargs の値とスレッドのオブジェクトとともに結果を格納する future<Ty> のオブジェクトを返します。
decay<Fn>::type が開始以外の型である、2 番目の関数は、オーバーロードの解決に含められません。
policy が launch::anyの場合、関数は launch::async か launch::deferredを選択する場合があります。この実装では、関数は launch::asyncを使用します。
policy が launch::asyncの場合、関数は INVOKE(dfn, dargs..., Ty)を評価するスレッドを作成します。関数は、待機中の結果がなくてもスレッドを作成した後にを返します。システムが新しいスレッドを開始できない場合 resource_unavailable_try_againのエラー コードがある関数は system_error をスローします。
policy が launch::deferredの場合、関数は 遅延関数を 保持する場合と、関連付けられた状態を非同期。使用できる状態に関連する非同期状態を待機する非仮想関数を使用して、一定への最初の呼び出しは評価の INVOKE(dfn, dargs..., Ty)に、遅延の関数を呼び出します。
いずれの場合も、future のオブジェクトの関連する非同期状態は 準備完了に 返される通常、例外をスローするかは INVOKE(dfn, dargs…, Ty) の評価によって、完了するまで設定されません。関連する非同期状態の結果は 1 がスローされた場合、または値によって返される値です。例外
擬似 INVOKE 関数は <functional>で定義されます。
必要条件
将来のヘッダー:
名前空間: std