在延迟的任务对象上调用std :: future :: wait_for会发生什么?
理想情况下,我想唤醒一个延迟的任务,但不会在当前线程中处理任务。
答案 0 :(得分:1)
使用async
策略调用launch::deferred
将不会执行延迟任务,直到第一次调用非定时等待函数(阻塞类似get
的函数)。这在语言规范[futures.async]部分,第3.2段中详细说明:
第一次调用非定时等待功能(33.6.5) 在引用此共享状态的异步返回对象上,应调用延迟函数 在调用等待函数的线程中。
所以这将在当前线程中运行任务。我想你可以创建另一个线程,并将任务传递给它。