名前空間
変種
操作

std::future<T>::wait

From cppreference.com
< cpp‎ | thread‎ | future
 
 
並行性サポートライブラリ
スレッド
(C++11)
(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++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
(C++11)(C++20で非推奨)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
 
void wait() const;
(C++11以降)

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

この関数の呼び出し前にvalid() == false の場合、動作は未定義です。

目次

[編集] パラメータ

(なし)

[編集] 戻り値

(なし)

[編集] 例外

実装定義の例外をスローする場合があります。

[編集] 注記

実装は、呼び出し前にvalid() == false であるケースを検出した場合は、std::future_errorstd::future_errc::no_state のエラー条件でスローすることが推奨されます。


[編集]

#include <chrono>
#include <future>
#include <iostream>
#include <thread>
 
int fib(int n)
{
    if (n < 3)
        return 1;
    else
        return fib(n - 1) + fib(n - 2);
}
 
int main()
{
    std::future<int> f1 = std::async(std::launch::async, []() { return fib(40); });
    std::future<int> f2 = std::async(std::launch::async, []() { return fib(43); });
 
    std::cout << "waiting... " << std::flush;
    const auto start = std::chrono::system_clock::now();
 
    f1.wait();
    f2.wait();
 
    const auto diff = std::chrono::system_clock::now() - start;
    std::cout << std::chrono::duration<double>(diff).count() << " seconds\n";
 
    std::cout << "f1: " << f1.get() << '\n';
    std::cout << "f2: " << f2.get() << '\n';
}

実行結果の例

waiting... 1.61803 seconds
f1: 102334155
f2: 433494437

[編集] 関連項目

指定されたタイムアウト時間内に結果が利用可能でない場合、待機して戻ります。
(public member function) [編集]
指定された時刻までに結果が利用可能でない場合、待機して戻ります。
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)