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_state
の error_code を持つ future_error をスローします。
このメソッドが同じ関連付けられた非同期状態を持つ約束オブジェクトに対して既に呼び出されている場合、メソッドは future_error
の error_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_exception
、set_exception_at_thread_exit、set_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_exception、set_exception_at_thread_exit
、set_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_exception、set_exception_at_thread_exit、set_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_exception、set_exception_at_thread_exit、set_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
オブジェクト。