std::future<T>::wait

来自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++20)
(C++20)
未来体
(C++11)
(C++11)
(C++11)
安全回收
风险指针
原子类型
(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_errc::no_state 为错误条件的 std::future_error


[编辑]示例

#include <chrono>#include <future>#include <iostream>#include <thread>   int fib(int n){if(n <3)return1;elsereturn 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<<"等待... "<<std::flush;constauto start =std::chrono::system_clock::now();   f1.wait(); f2.wait();   constauto diff =std::chrono::system_clock::now()- start;std::cout<<std::chrono::duration<double>(diff).count()<<" 秒\n";   std::cout<<"f1: "<< f1.get()<<'\n';std::cout<<"f2: "<< f2.get()<<'\n';}

可能的输出:

等待... 1.61803 秒 f1: 102334155 f2: 433494437

[编辑]参阅

等待结果,如果在指定的超时间隔后仍然无法得到结果,则返回。
(公开成员函数)[编辑]
等待结果,如果在已经到达指定的时间点时仍然无法得到结果,则返回。
(公开成员函数)[编辑]
close