是否需要std :: launch :: async策略?

时间:2015-02-22 14:52:57

标签: c++ c++11 asynchronous stdasync

以下内容有何不同:

std::async(my_function);

std::async(std::launch::async, my_function);

在这种情况下使用pilicy std :: launch :: async 有什么区别? 第一个选项是不是异步启动函数??

1 个答案:

答案 0 :(得分:3)

第一个等同于传递launch::async | launch::deferred,在这种情况下,无论是异步启动还是仅延迟启动(在调用非get()非定时等待函数时调用它都取决于实现关于返回的未来)。

这个想法是默认情况下,如果创建新线程不会成为性能增益,则实现可以选择推迟。要强制创建新线程,请仅传递launch::async