std::promise
提供: cppreference.com
Defined in header <future>
|
||
template< class T > class promise; |
(1) | (C++11およびそれ以降) |
template< class T > class promise<T&>; |
(2) | (C++11およびそれ以降) |
template<> class promise<void>; |
(3) | (C++11およびそれ以降) |
1) 基本テンプレート
2) スレッド間でオブジェクトをやり取りするための非void特殊化
3) スレッド間でステートレスなイベントをやり取りするためのvoid特殊化
クラステンプレートstd::promise
は、std::promise
が作成するstd::futureオブジェクトを介して、後に非同期に取得される値を格納するための機能を提供します.
各promiseは状態情報と、まだ評価できないかもしれないが、評価すると値(void値も可)または例外として評価される「結果」をひとつの「共有状態」と紐付けます。promiseは共有状態について以下の3つのことを行います。
- ready 状態にする: promiseは共有状態に結果もしくは例外を格納し、ready 状態にして共有状態に紐付いたfutureを待っているスレッドをアンブロックします。
- 解放する: promiseは共有状態への参照を破棄します。破棄された参照が最後の参照だった場合、共有状態も破棄されます。共有状態がstd::asyncを使って作成された共有状態でかつready状態である場合以外は、この操作はブロックしません。
- 破棄する: promiseはエラーコードstd::future_errc::broken_promiseをもつstd::future_error型の例外を格納し、共有状態をready 状態にし、その後解放します。
promiseはpromise-futureコミュニケーションチャネルの"push"側です。共有状態に値を格納する操作は共有状態を待っている関数(例えばstd::shared_future::get)が成功して返るのと(std::memory_orderに定義されるように)「同期」します。同じ共有状態に対する同時アクセスは衝突することがあります。例えば、std::shared_future::getが同時に複数呼び出される場合、全て読み込み専用であるか、または外部で同期されなければなりません。
目次 |
[編集] メンバ関数
promiseオブジェクトを作成します (パブリックメンバ関数) | |
promiseオブジェクトをデストラクトします (パブリックメンバ関数) | |
共有状態を代入します (パブリックメンバ関数) | |
スワップ2約束オブジェクト Original: swaps two promise objects The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
結果の取得 | |
は約束された結果に関連付けられfutureを返す最初の引数が2番目の値より小さい'の場合 Original: returns a future associated with the promised result The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
結果の設定 | |
sets the result to specific value (パブリックメンバ関数) | |
唯一のスレッドの終了時に通知を提供しながら、特定の値に結果を設定します Original: sets the result to specific value while delivering the notification only at thread exit The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
例外を示すために結果を設定します Original: sets the result to indicate an exception The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
のみスレッドの終了時に通知を提供しながら、例外を示すために結果を設定します Original: sets the result to indicate an exception while delivering the notification only at thread exit The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) |
[編集] 非メンバ関数
(C++11) |
std::swapアルゴリズムの特殊化 (関数テンプレート) |
[編集] ヘルパークラス
std::uses_allocator型形質を専門としています Original: specializes the std::uses_allocator type trait The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (クラステンプレートの特殊化の2つの値を比較します) |