次の方法で共有


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;

パラメーター


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

解説

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

関連項目

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