我想知道在哪种情况下std::launch::deferred
是必需的。
据我所知,多线程的目的是另一个线程将在后台处理某些事情或进行计算,并在任务完成时返回一个值。它应该在创建线程后立即开始。话虽这么说,为什么我们需要这种推迟发射呢?
话虽这么说,为什么我们需要这种推迟发射呢?
这个问题类似于询问为什么&&
和||
操作员具有短路行为。如果运算结果由LHS确定,则短路行为将导致测试中表达式的RHS未被评估。可以通过使用多个if
语句来表示短路行为。因此,该语言提供了多种表达同一想法的方法。
类似地,通过显示所有涉及的任务可以更清楚地表达软件组件,即使由于组件不需要其他任务即可完成其工作,也并非实际上执行了所有任务。当然,可以通过仅在任务真正需要运行之前不表达任务来编写不同的软件。
作为示例,代码可以初始化任务数组,并使用循环对其进行迭代。但是,break
从循环的早期开始将避免执行其余任务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句