【问题标题】:Is std::launch::async policy needed?是否需要 std::launch::async 策略?
【发布时间】: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


    【解决方案1】:

    第一个相当于传递launch::async | launch::deferred,在这种情况下,它是异步启动还是仅仅延迟启动(当在返回的future上调用get()等非定时等待函数时调用) )。

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

    【讨论】:

    • 在我看来,launch::async only 是绝大多数用例中的首选方法。而且这很可能是用户代码中经常发现的错误:(
    • 当你说'这很可能是用户代码中经常发现的错误'时,你的意思是省略'launch::async'是错误吗??
    猜你喜欢
    • 2012-04-01
    • 2012-07-13
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 2017-06-19
    • 2012-04-21
    相关资源
    最近更新 更多