Tag: 打包任务

packaged_task和async之间有什么区别?

在使用C ++ 11的线程模型时,我注意到了这一点 std::packaged_task<int(int,int)> task([](int a, int b) { return a + b; }); auto f = task.get_future(); task(2,3); std::cout << f.get() << '\n'; 和 auto f = std::async(std::launch::async, [](int a, int b) { return a + b; }, 2, 3); std::cout << f.get() << '\n'; 似乎做了完全一样的事情。 我明白,如果我用std::launch::deferred运行std::async ,但是在这种情况下有一个主要区别吗? 这两种方法有什么区别,更重要的是,我应该在哪些用例上使用它们呢?