C++11 在不调用future的情况下唤醒延迟的任务对象<;T>;。得到()

C++11 在不调用future的情况下唤醒延迟的任务对象<;T>;。得到(),c++11,visual-studio-2015,stdasync,std-future,C++11,Visual Studio 2015,Stdasync,Std Future,在延迟任务对象上调用std::future::wait_for时会发生什么 理想情况下,我希望唤醒一个延迟的任务,但不想在当前线程中处理该任务。使用launch::deferred策略调用async将不会执行延迟的任务,直到第一次调用一个非定时等待函数(一个像get那样阻塞的函数)。语言规范[futures.async]部分第3.2段对此进行了详细说明: 第一次调用非定时等待功能(33.6.5) 在引用此共享状态的异步返回对象上,应调用延迟函数 在调用等待函数的线程中 因此,这将在当前线程中运行

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


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

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

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

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