线程执行需要自己建线程,这个还好,但是如果有数据同步交互就麻烦点。比如常见的需求,线程异步执行下面这个耗时的函数,方法返回int传给主线程,主线程在未来某一步需要结果的时候等待,还要用condition_variable来阻塞等待。异步库并没有什么比较trick的东西,更像是语法糖,把线程常用的东西简单化。
int test(int a){
for (int i = 0; i < 10;i++){
this_thread::sleep_for(chrono::milliseconds(1000));//代替某些耗时方法
cout << ++a<<endl;
}
return a;
}
1.单纯用async和future
#include <future> // std::promise, std::future
int main(void)
{
future<int> ft = async(test,100);
this_thread::sleep_for(chrono::milliseconds(30