次の方法で共有


shared_future クラス

非同期のリターン オブジェクトを記述します。 future オブジェクトとは異なり、非同期プロバイダーを任意の数の shared_future オブジェクトに関連付けることができます。

構文

template <class Ty>
class shared_future;

解説

validoperator=、デストラクター以外のメソッドは、emptyshared_future オブジェクトで呼び出さないでください。

shared_future オブジェクトは同期されません。 同じオブジェクト上で複数のスレッドからメソッドを呼び出すことは、結果が予測不可能なデータ競合をもたらします。

メンバー

パブリック コンストラクター

名前 説明
shared_future shared_future オブジェクトを構築します。

パブリック メソッド

名前 説明
get 関連付けられた非同期状態に格納されている結果を取得します。
valid オブジェクトが空でないかどうかを指定します。
待機 関連付けられた非同期状態が ready になるまで、現在のスレッドをブロックします。
wait_for 関連付けられた非同期状態が準備できるまで、または指定した時間が経過するまでブロックします。
wait_until 関連付けられた非同期状態が準備できるまで、または指定した時点までブロックします。

パブリック演算子

名前 説明
shared_future::operator= 新しい関連付けられた非同期状態を割り当てます。

要件

ヘッダー:<future>

名前空間: std

shared_future::get

関連付けられた非同期状態に格納されている結果を取得します。

const Ty& get() const;

Ty& get() const;

void get() const;

解説

結果が例外の場合は、そのメソッドが再スローします。 それ以外の場合、結果が返されます。

結果を取得する前に、このメソッドは、関連付けられた非同期状態が準備できるまで、現在のスレッドをブロックします。

部分的特殊化 shared_future<Ty&> では、格納されている値は、実質的には非同期プロバイダーに戻り値として渡されたオブジェクトへの参照です。

特殊化 shared_future<void> には格納されている値がないため、このメソッドは void を返します。

shared_future::operator=

指定したオブジェクトから、関連付けられた非同期状態を転送します。

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

パラメーター

Right
shared_future オブジェクト。

戻り値

*this

解説

最初の演算子では、操作の後、Right に関連付けられた非同期状態は既にありません。

2 番目のメソッドでは、Right は関連付けられた非同期状態を維持します。

shared_future::shared_future コンストラクター

shared_future オブジェクトを構築します。

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

パラメーター

Right
future または shared_future オブジェクト。

解説

1 つ目のコンストラクターは、関連付けられた非同期状態がない shared_future オブジェクトを構築します。

2 つ目および 3 つ目のコンストラクターは、shared_future オブジェクトを構築し、Right から関連付けられた非同期状態を転送します。 Right に関連付けられた非同期状態は既にありません。

4 つ目のコンストラクターは、 と同じ関連付けられた非同期状態を持つ shared_futureRight オブジェクトを構築します。

shared_future::valid

オブジェクトが関連付けられた非同期状態であるかどうかを指定します。

bool valid() noexcept;

戻り値

オブジェクトが関連付けられた非同期状態である場合は true を返します。それ以外の場合は false を返します。

shared_future::wait

関連付けられた非同期状態ready になるまで、現在のスレッドをブロックします。

void wait() const;

解説

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

shared_future::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

解説

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

shared_future::wait_until

関連付けられた非同期状態が ready になるまで、または指定した時点後まで現在のスレッドをブロックします。

template <class Clock, class Duration>
future_status wait_until(
    const chrono::time_point<Clock, Duration>& Abs_time) const;

パラメーター

Abs_time
スレッドがブロックを解除できる時間を指定する chrono::time_point オブジェクト。

戻り値

呼び出し側に戻る理由を示す future_status

解説

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

関連項目

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