future
クラス
非同期のリターン オブジェクトを記述します。
構文
template <class Ty>
class future;
解説
各標準非同期プロバイダーは、このテンプレートのインスタンス化の型を持つオブジェクトを返します。 future
オブジェクトは、関連付けられている非同期プロバイダーへの唯一のアクセスを提供します。 同じ非同期プロバイダーに関連付けられている複数の非同期リターン オブジェクトが必要な場合は、future
オブジェクトを shared_future
オブジェクトにコピーします。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
future |
future オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
get |
関連付けられた非同期状態に格納されている結果を取得します。 |
share |
オブジェクトを shared_future に変換します。 |
valid |
オブジェクトが空でないかどうかを指定します。 |
wait |
関連付けられた非同期状態が ready になるまで、現在のスレッドをブロックします。 |
wait_for |
関連付けられた非同期状態が準備できるまで、または指定した時間が経過するまでブロックします。 |
wait_until |
関連付けられた非同期状態が準備できるまで、または指定した時点までブロックします。 |
パブリック演算子
名前 | 説明 |
---|---|
future::operator= |
関連付けられた非同期状態を、指定されたオブジェクトから転送します。 |
要件
ヘッダー: <future>
名前空間: std
コンストラクター
future
オブジェクトを構築します。
future() noexcept;
future(future&& Other) noexcept;
パラメーター
Other
future
オブジェクト。
解説
1 つ目のコンストラクターは、関連付けられた非同期状態がない future
オブジェクトを構築します。
2 つ目のコンストラクターは、future
オブジェクトを構築し、Other から関連付けられた非同期状態を転送します。 Other に関連付けられた非同期状態は既にありません。
get
関連付けられた非同期状態に格納されている結果を取得します。
Ty get();
戻り値
結果が例外の場合は、そのメソッドが再スローします。 それ以外の場合、結果が返されます。
解説
結果を取得する前に、このメソッドは、関連付けられた非同期状態が準備できるまで、現在のスレッドをブロックします。
部分的特殊化 future<Ty&>
では、格納されている値は、実質的には非同期プロバイダーに戻り値として渡されたオブジェクトへの参照です。
特殊化 future<void>
には格納されている値がないため、このメソッドは void
を返します。
その他の特殊化では、メソッドは、格納されている値からその戻り値を移動します。 そのため、このメソッドを 1 回だけ呼び出します。
operator=
指定したオブジェクトから、関連付けられた非同期状態を転送します。
future& operator=(future&& Right) noexcept;
パラメーター
Right
future
オブジェクト。
戻り値
*this
解説
転送の後、Right に関連付けられた非同期状態は既にありません。
share
オブジェクトを shared_future
オブジェクトに変換します。
shared_future<Ty> share();
戻り値
shared_future(move(*this))
valid
オブジェクトが関連付けられた非同期状態であるかどうかを指定します。
bool valid() noexcept;
戻り値
オブジェクトが関連付けられた非同期状態である場合は true
を返します。それ以外の場合は false
を返します。
wait
関連付けられた非同期状態が ready になるまで、現在のスレッドをブロックします。
void wait() const;
解説
関連付けられている非同期状態は、非同期プロバイダーが戻り値を格納した場合か例外を格納した場合のみ準備完了になります。
wait_for
関連付けられた非同期状態が ready になるまで、または指定した時間が経過するまでブロックします。
template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& Rel_time) const;
パラメーター
Rel_time
スレッドがブロックする最大の時間間隔を指定する chrono::duration
オブジェクト。
戻り値
呼び出し側に戻る理由を示す future_status
。
解説
関連付けられている非同期状態は、非同期プロバイダーが戻り値を格納した場合か例外を格納した場合のみ準備完了になります。
wait_until
関連付けられた非同期状態が ready になるまで、または指定した時点後まで現在のスレッドをブロックします。
template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& Abs_time) const;
パラメーター
Abs_time
スレッドがブロックを解除できる時間を指定する time_point
オブジェクト。
戻り値
呼び出し側に戻る理由を示す future_status
。
解説
関連付けられている非同期状態は、非同期プロバイダーが戻り値を格納した場合か例外を格納した場合のみ準備完了になります。