packaged_task 异步调用函数打包
packaged_task 异步调用函数打包
#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";
}
int main(int argc, char* argv[])
{
packaged_task< string(int) > task(TestPack);//生成一个test
auto 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();
return 0;
}
原文地址:https://blog.csdn.net/qq_45159887/article/details/143025031
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!