名前空間
変種
操作

std::shared_future<T>::wait

提供: cppreference.com
 
 
スレッドサポートライブラリ
スレッド
(C++11)
(C++20)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
相互排他
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
フューチャー
(C++11)
(C++11)
(C++11)
(C++11)
 
 
void wait() const;
(C++11以上)

結果が利用可能になるまでブロックします。 呼び出し後 valid() == true になります。

この関数を呼ぶ前に valid()== false であった場合、動作は未定義です。

目次

[編集] 引数

(なし)

[編集] 戻り値

(なし)

[編集] 例外

(なし)

[編集] ノート

処理系は呼び出し前に valid == false であった場合を検出し、エラーコンディション std::future_errc::no_state を持つ std::future_error を投げることが推奨されます。

複数のスレッドから同じ std::shared_future に対して wait を呼ぶことは安全ではありません。 意図された使用方法は、同じ共有状態で待機する各スレッドごとに std::shared_future のコピーを持つことです。

[編集]

#include <iostream>
#include <future>
#include <thread>
 
int fib(int n)
{
  if (n < 3) return 1;
  else return fib(n-1) + fib(n-2);
}
 
int main()
{
    std::shared_future<int> f1 = std::async(std::launch::async, [](){
        return fib(20);
    });
    std::shared_future<int> f2 = std::async(std::launch::async, [](){
        return fib(25);
    });
 
    std::cout << "waiting...\n";
    f1.wait();
    f2.wait();
 
    std::cout << "f1: " << f1.get() << '\n';
    std::cout << "f2: " << f2.get() << '\n';
}

出力:

waiting...
f1: 6765
f2: 75025

[編集] 関連項目

結果を待ちます。 指定されたタイムアウト期間が満了するまで利用可能にならなければリターンします
(パブリックメンバ関数) [edit]
結果を待ちます。 指定時刻に達するまで利用可能にならなければリターンします
(パブリックメンバ関数) [edit]