#include<thread>#include<iostream>#include<future>#include<string>
using namespace std;//期望调用函数和取返回值分开为二步走string TestPack(int index)//线程函数{cout <<"begin Test Pack "<< index << endl;this_thread::sleep_for(2s);return"Test Pack return";}intmain(int argc,char* argv[]){packaged_task<string(int)>task(TestPack);//生成一个testauto result = task.get_future();//获取函数返回值//task(100);thread th(move(task),101);cout <<"begin result get"<< endl;//测试是否超时for(int i =0; i <30; i++){if(result.wait_for(100ms)!= future_status::ready)//等待超时{continue;}}if(result.wait_for(100ms)== future_status::timeout)//如果等待超时{cout <<"wait result timeout"<< endl;}else//如果等待没有超时,取得结果cout <<"result get "<< result.get()<< endl;th.join();getchar();return0;}