最佳答案
在使用 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
可能会有很大的不同,但是在这种情况下有一个不同吗?
这两种方法之间的区别是什么,更重要的是,在什么用例中我应该使用一种方法而不是另一种方法?