次の方法で共有


<future>

標準ヘッダー <future> をインクルードして、クラス テンプレートとサポート テンプレートを定義します。これらのクラスやテンプレートによって、関数の実行 (場合によっては個別のスレッドでの実行) やその結果の取得が簡略化されます。 結果は、関数によって返される値、または関数によって生成されるが関数ではキャッチされない例外になります。

このヘッダーではコンカレンシー ランタイム (ConcRT) が使用されます。これにより、このヘッダーを他の ConcRT メカニズムと共に使用できます。 ConcRT の詳細については、「コンカレンシー ランタイム」を参照してください。

構文

#include <future>

解説

Note

/clr を使用してコンパイルされたコードでは、このヘッダーはブロックされます。

非同期プロバイダーは、関数呼び出しの結果を格納します。 関数呼び出しの結果を取得するには、非同期のリターン オブジェクトを使用します。 関連付けられた非同期状態によって、非同期プロバイダーと 1 つ以上の非同期のリターン オブジェクトの間で通信を実行できます。

プログラムでは、関連付けられた非同期状態のオブジェクトは直接作成されません。 プログラムでは、必要に応じて非同期プロバイダーが作成され、その非同期プロバイダーに基づいて非同期のリターン オブジェクトが作成されます。このリターン オブジェクトでは、その関連付けられた非同期状態がプロバイダーと共有されます。 非同期プロバイダーと非同期のリターン オブジェクトによって、共有済みの関連付けられた非同期状態を保持するオブジェクトが管理されます。 関連付けられた非同期状態を参照する最後のオブジェクトが、その参照を解放すると、関連付けられた非同期状態を保持するオブジェクトが破棄されます。

非同期プロバイダーや、関連付けられた非同期状態を保持しない非同期のリターン オブジェクトは、になります。

関連付けられている非同期状態は、非同期プロバイダーが戻り値を格納した場合か例外を格納した場合のみ準備完了になります。

テンプレート関数 async、およびクラス テンプレート promisepackaged_task は、非同期プロバイダーです。 クラス テンプレート futureshared_future は、非同期のリターン オブジェクトを記述します。

各クラス テンプレート (promisefutureshared_future) は、void 型に特殊化されています。また、参照渡しによる値の格納と取得用に部分的に特殊化されています。 これらの特殊化がプライマリ テンプレートと異なる点は、戻り値を格納および取得する関数のシグネチャとセマンティクスだけです。

クラス テンプレート futureshared_future では、それらのデストラクターでブロックは実行されません。ただし、下位互換性のために次のような例外が 1 つだけあります。future で開始されたタスクにアタッチされている shared_future (または最後の std::async) では、他のすべての future とは異なり、タスクが完了していない場合にデストラクターでブロックが実行されます。つまり、デストラクターがブロックするのは、スレッドがまだ .get().wait() を呼び出しておらず、タスクが実行中の場合です。 下書き標準の std::async の説明に、次の使いやすさに関するメモが追加されました。"[注: std::async から取得した将来がローカル スコープ外に移動された場合、将来を使用する他のコードは、将来のデストラクターが共有状態を準備するためにブロックする可能性があることに注意する必要があります。-end note]" 他のすべての場合、 future デストラクターと shared_future デストラクターは必須であり、ブロックされることは決して保証されません。

メンバー

クラス

名前 説明
future クラス 非同期のリターン オブジェクトを記述します。
future_error クラス future オブジェクトを管理する型のメソッドによってスローされる例外オブジェクトを記述します。
packaged_task クラス 呼び出しラッパーであり、呼び出しシグネチャが Ty(ArgTypes...) である非同期プロバイダーを記述します。 その関連付けられた非同期状態には、可能性がある結果に加えて呼び出し可能オブジェクトのコピーが保持されます。
promise クラス 非同期プロバイダーを記述します。
shared_future クラス 非同期のリターン オブジェクトを記述します。 future オブジェクトとは異なり、非同期プロバイダーを任意の数の shared_future オブジェクトに関連付けることができます。

構造体

名前 説明
is_error_code_enum 構造体 future_errcerror_code の格納に適していることを示す特殊化です。
uses_allocator 構造体 常に true を保持する特殊化です。

関数

名前 説明
async 非同期プロバイダーを表します。
future_category error_category オブジェクトに関連するエラーの特性を設定する future オブジェクトへの参照を返します。
make_error_code error_code エラーの特性を設定する error_category オブジェクトを保持する future を作成します。
make_error_condition error_condition エラーの特性を設定する error_category オブジェクトを保持する future を作成します。
スワップ 関連付けられた非同期状態を、promise オブジェクト間で交換します。

列挙型

名前 説明
future_errc future_error クラスによって報告されるエラーのシンボル名を提供します。
future_status 期限が設定された wait 関数から返される理由のシンボル名を提供します。
launch テンプレート関数 async で使用できるモードを示すビットマスク型を表します。

関連項目

ヘッダー ファイル リファレンス