std::packaged_task是C++11引入的组件,用于包装可调用对象(函数、函数对象等)为一个任务。 可以结合std::future从而在任务执行完成后获取其结果。
std::future
用于关联一个异步任务,并在任务执行完成后获取其结果。它允许你查询任务的状态、等待任务完成,并获取最终的返回值或异常信息。
int sum1(int a, int b)
{
return a + b;
}
int sum2(int a, int b, int c)
{
return a + b + c;
}
int main()
{
packaged_task<int(int,int)> task(sum1);
future<int> res = task.get_future();
task(10,20);
cout<<res.get()<<endl;
}
packaged_task与funtion进行比较的化优势在于它可以获取函数的返回值。可以使用get_future()函数。