以下内容有何不同:
std::async(my_function);
和
std::async(std::launch::async, my_function);
在这种情况下使用pilicy std :: launch :: async 有什么区别? 第一个选项是不是异步启动函数??
答案 0 :(得分:3)
第一个等同于传递launch::async | launch::deferred
,在这种情况下,无论是异步启动还是仅延迟启动(在调用非get()
非定时等待函数时调用它都取决于实现关于返回的未来)。
这个想法是默认情况下,如果创建新线程不会成为性能增益,则实现可以选择推迟。要强制创建新线程,请仅传递launch::async
。