std::shared_future<T>::wait
提供: cppreference.com
< cpp | thread | shared future
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
のコピーを持つことです。
[編集] 例
Run this code
#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
[編集] 関連項目
結果を待ちます。 指定されたタイムアウト期間が満了するまで利用可能にならなければリターンします (パブリックメンバ関数) | |
結果を待ちます。 指定時刻に達するまで利用可能にならなければリターンします (パブリックメンバ関数) |