概念简介
packaged_task
用于包装可调用目标(Callable)为一个对象,如lambda,普通函数,小括号重载等,用于异步调用。
其返回值或所抛异常被存储于能通过 std::future 对象访问的共享状态中,和promise类似。
将函数的调用与函数返回值的获取分开调用,这样就给异步提供很大的便利。
猛的一看好像和std::bind
绑定器作用相似,可惜std::bind
返回的对象是同步的。
示例:函数在子线程执行,返回值可以在主线程异步获取
std::string Func()
{
std::cout << "Thread t Call Func"<< std::endl;
std::this_thread::sleep_for(std::chrono::seconds(2));
return