名前空間
変種
操作

std::promise

提供: cppreference.com
< cpp‎ | thread
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オブジェクトを作成します
(パブリックメンバ関数) [edit]
promiseオブジェクトをデストラクトします
(パブリックメンバ関数) [edit]
共有状態を代入します
(パブリックメンバ関数) [edit]
スワップ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.

(パブリックメンバ関数) [edit]
結果の取得
は約束された結果に関連付けられ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.

(パブリックメンバ関数) [edit]
結果の設定
sets the result to specific value
(パブリックメンバ関数) [edit]
唯一のスレッドの終了時に通知を提供しながら、特定の値に結果を設定します
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.

(パブリックメンバ関数) [edit]
例外を示すために結果を設定します
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.

(パブリックメンバ関数) [edit]
のみスレッドの終了時に通知を提供しながら、例外を示すために結果を設定します
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.

(パブリックメンバ関数) [edit]

[編集] 非メンバ関数

std::swapアルゴリズムの特殊化
(関数テンプレート) [edit]

[編集] ヘルパークラス

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つの値を比較します) [edit]