【发布时间】:2015-02-22 14:52:57
【问题描述】:
以下有什么区别:
std::async(my_function);
和
std::async(std::launch::async, my_function);
在这种情况下使用 pilicy std::launch::async 有什么区别? 反正第一个选项不会异步启动函数吗??
【问题讨论】:
标签: c++ c++11 asynchronous stdasync
以下有什么区别:
std::async(my_function);
和
std::async(std::launch::async, my_function);
在这种情况下使用 pilicy std::launch::async 有什么区别? 反正第一个选项不会异步启动函数吗??
【问题讨论】:
标签: c++ c++11 asynchronous stdasync
第一个相当于传递launch::async | launch::deferred,在这种情况下,它是异步启动还是仅仅延迟启动(当在返回的future上调用get()等非定时等待函数时调用) )。
这个想法是,默认情况下,如果创建新线程不会提高性能,实现可以选择延迟。要强制创建新线程,请仅传递 launch::async。
【讨论】:
launch::async only 是绝大多数用例中的首选方法。而且这很可能是用户代码中经常发现的错误:(