在不调用 future<T>.get() 的情况下唤醒延迟任务对象

Wake a deferred task object without invoking future<T>.get()

当您对延迟任务对象调用 std::future::wait_for 时会发生什么?

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

使用 launch::deferred 策略调用 async 将不会执行延迟任务,直到第一次调用 non-timed 等待函数(像 get ).这在语言规范 [futures.async] 部分第 3.2 段中有详细说明:

The first call to a non-timed waiting function (33.6.5) on an asynchronous return object referring to this shared state shall invoke the deferred function in the thread that called the waiting function.

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