本博客参考自https://thispointer.com/c11-tutorial/
C++多线程的在某些场景需要实现异步操作,由std::futer 和std::asych, std::packaged_task, std::promise搭配使用。
目录
1.std::future
std::future是一个类模板,它的模板类可访问“未来”的值,从而实现异步访问。
创建语法:
与std::futer 和std::asych, std::packaged_task, std::promise搭配使用对应的创建语法如下
std::future<int> futureObj = promiseObj.get_future();
std::future<std::string> resultFromDB = std::async(std::launch::async, fetchDataFromDB, "Data");
std::future<std::string> result = task.get_future();
调用语法:
获取future结果有三种方式:get、wait、wait_for,其中get等待异步操作结束并返回结果,wait只是等待异步操作完成,没有返回值,wait_for是超时等待返回结果(参考自https://blog.csdn.net/daaikuaichuan/article/details/81173303)
std::cout<<futureObj.get()<<std::endl; //在get到值之前程序会一直等待
2.std::promise
创建语法:</