shared_future クラス
非同期のリターン オブジェクトを記述します。 future オブジェクトとは異なり、非同期プロバイダーを任意の数の shared_future
オブジェクトに関連付けることができます。
構文
template <class Ty>
class shared_future;
解説
valid
、operator=
、デストラクター以外のメソッドは、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_future
Right オブジェクトを構築します。
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。
解説
関連付けられている非同期状態は、非同期プロバイダーが戻り値を格納した場合か例外を格納した場合のみ準備完了になります。