次の方法で共有


promise クラス

非同期プロバイダーを記述します。

構文

template <class Ty>
class promise;

メンバー

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

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

パブリック メソッド

名前 説明
get_future この約束に関連付けられている future を返します。
set_exception この約束の結果をアトミックに設定して、例外を示します。
set_exception_at_thread_exit この約束の結果をアトミックに設定して例外を示し、現在のスレッドのすべてのスレッド ローカルのオブジェクトが破棄された後にのみ通知を配信します (通常はスレッド終了時)。
set_value この約束の結果をアトミックに設定して、値を示します。
set_value_at_thread_exit この約束の結果をアトミックに設定して値を示し、現在のスレッドのすべてのスレッド ローカルのオブジェクトが破棄された後にのみ通知を配信します (通常はスレッド終了時)。
スワップ この promise の関連付けられた非同期状態を、指定した promise オブジェクトの状態と交換します。

パブリック演算子

名前 説明
promise::operator= この約束オブジェクトの共有状態の割り当て。

継承階層

promise

要件

ヘッダー:<future>

名前空間: std

promise::get_future

この promise と同じ関連付けられた非同期状態future オブジェクトを返します。

future<Ty> get_future();

解説

promise オブジェクトが空の場合、このメソッドは no_stateerror_code を持つ future_error をスローします。

このメソッドが同じ関連付けられた非同期状態を持つ約束オブジェクトに対して既に呼び出されている場合、メソッドは future_errorerror_code を持つ future_already_retrieved をスローします。

promise::operator=

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

promise& operator=(promise&& Other) noexcept;

パラメーター

その他
promise オブジェクト。

戻り値

*this

解説

この演算子は Other から関連付けられた非同期状態を転送します。 転送後、Other は空になります。

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

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

promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;

パラメーター

Al
メモリ割り当て。 アロケーターの詳細については、「 <allocators>」を参照してください。

その他
promise オブジェクト。

解説

最初のコンストラクターは、 empty promise オブジェクトを構築します。

2 つ目のコンストラクターは、空の promise オブジェクトを構築して、Al をメモリの割り当てに使用します。

3 つ目のコンストラクターは、promise オブジェクトを構築し、関連付けられた非同期状態を Other から転送し、Other を空のままにします。

promise::set_exception

アトミックに例外をこの promise オブジェクトの結果として格納し、関連付けられた非同期状態準備完了に設定します。

void set_exception(exception_ptr Exc);

パラメーター

Exc
このメソッドにより例外結果として格納されている exception_ptr

解説

promise オブジェクトに関連付けられた非同期状態がない場合、このメソッドは no_state のエラー コードを持つ future_error をスローします。

set_exceptionset_exception_at_thread_exitset_value、または set_value_at_thread_exit が同じ関連付けられた非同期状態を持つ promise オブジェクトに対して呼び出されている場合、このメソッドは promise_already_satisfied のエラー コードを持つ future_error をスローします。

このメソッドの結果として、関連付けられた非同期状態に対してブロックされているすべてのスレッドのブロックが解除されます。

promise::set_exception_at_thread_exit

この promise の結果をアトミックに設定して例外を示し、現在のスレッドのすべてのスレッド ローカルのオブジェクトが破棄された後にのみ通知を配信します (通常はスレッド終了時)。

void set_exception_at_thread_exit(exception_ptr Exc);

パラメーター

Exc
このメソッドにより例外結果として格納されている exception_ptr

解説

promise オブジェクトに関連付けられた非同期状態がない場合、このメソッドは no_state のエラー コードを持つ future_error をスローします。

set_exceptionset_exception_at_thread_exitset_value、または set_value_at_thread_exit が同じ関連付けられた非同期状態を持つ promise オブジェクトに対して既に呼び出されている場合、このメソッドは promise_already_satisfied のエラー コードを持つ future_error をスローします。

set_exceptionとは対照的に、このメソッドは、現在のスレッド内のすべてのスレッド ローカル オブジェクトが破棄されるまで、関連付けられている非同期状態を準備完了に設定しません。 通常、関連付けられた非同期状態でブロックされているスレッドは、現在のスレッドが終了するまでブロック解除されません。

promise::set_value

アトミックに値をこの promise オブジェクトの結果として格納し、関連付けられた非同期状態準備完了に設定します。

void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();

パラメーター

ヴァル
結果として格納される値。

解説

promise オブジェクトに関連付けられた非同期状態がない場合、このメソッドは no_state のエラー コードを持つ future_error をスローします。

set_exceptionset_exception_at_thread_exitset_value、または set_value_at_thread_exit が同じ関連付けられた非同期状態の promise オブジェクトに対して呼び出されている場合、このメソッドは promise_already_satisfied のエラー コードを持つ future_error をスローします。

このメソッドの結果として、関連付けられた非同期状態に対してブロックされているすべてのスレッドのブロックが解除されます。

最初のメソッドは、Val が関連付けられた非同期状態にコピーされたときにスローされるすべての例外もスローします。 この状況では、関連付けられている非同期状態が準備完了に設定されていません。

2 番目のメソッドは、Val が関連付けられた非同期状態に移動されたときにスローされるすべての例外もスローします。 この状況では、関連付けられている非同期状態が準備完了に設定されていません。

部分的特殊化 promise<Ty&> の場合、格納されている値は、実際には Val への参照です。

特殊化 promise<void> の場合、格納されている値は存在しません。

promise::set_value_at_thread_exit

アトミックにこの promise オブジェクトの結果として値を格納します。

void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();

パラメーター

ヴァル
結果として格納される値。

解説

promise オブジェクトに関連付けられた非同期状態がない場合、このメソッドは no_state のエラー コードを持つ future_error をスローします。

set_exceptionset_exception_at_thread_exitset_value、または set_value_at_thread_exit が同じ関連付けられた非同期状態の promise オブジェクトに対して呼び出されている場合、このメソッドは promise_already_satisfied のエラー コードを持つ future_error をスローします。

set_valueとは異なり、現在のスレッド内のすべてのスレッド ローカル オブジェクトが破棄されるまで、関連付けられている非同期状態は準備完了に設定されません。 通常、関連付けられた非同期状態でブロックされているスレッドは、現在のスレッドが終了するまでブロック解除されません。

最初のメソッドは、Val が関連付けられた非同期状態にコピーされたときにスローされるすべての例外もスローします。

2 番目のメソッドは、Val が関連付けられた非同期状態に移動されたときにスローされるすべての例外もスローします。

部分的特殊化 promise<Ty&> の場合、格納されている値は、事実上 Val への参照です。

特殊化 promise<void> の場合、格納されている値は存在しません。

promise::swap

この約束オブジェクトに関連付けられた非同期状態を指定したオブジェクトのものと交換します。

void swap(promise& Other) noexcept;

パラメーター

その他
promise オブジェクト。

関連項目

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