唤醒延迟的任务对象而不调用将来的<t> .get()

时间:2018-04-09 09:17:52

标签: c++11 visual-studio-2015 stdasync std-future

在延迟的任务对象上调用std :: future :: wait_for会发生什么?

理想情况下,我想唤醒一个延迟的任务,但不会在当前线程中处理任务。

1 个答案:

答案 0 :(得分:1)

使用async策略调用launch::deferred将不会执行延迟任务,直到第一次调用非定时等待函数(阻塞类似get的函数)。这在语言规范[futures.async]部分,第3.2段中详细说明:

  

第一次调用非定时等待功能(33.6.5)   在引用此共享状态的异步返回对象上,应调用延迟函数   在调用等待函数的线程中。

所以这将在当前线程中运行任务。我想你可以创建另一个线程,并将任务传递给它。