C++ 11多线程不能直接从thread.join()获得想要的结果,必须定义一个变量,在线程执行时对这个变量赋值,然后执行join(), 过程比较复杂。
std::future可以从异步任务中获取结果,一般与std::async配合使用,std:async用于创建异步任务,实际上就是创建一个线程执行相应任务,然后std::future对象调用get获取该值(通常在另一个线程中获取)。
使用 std::funture类时需要包含如下头文件
#include
using namespace std;
std::future构造函数
std::future的拷贝构造函数是被禁用的,只提供默认的构造函数,普通赋值操作也被禁用,只提供了move赋值操作。
future(const future&) = delete; //拷贝禁用
future& operator=(const future&) = delete; //赋值禁用
使用方法如下:
std::future