在不调用 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.
所以这将运行当前线程中的任务。我想你可以创建另一个线程,并将它的任务传递给 运行.
当您对延迟任务对象调用 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.
所以这将运行当前线程中的任务。我想你可以创建另一个线程,并将它的任务传递给 运行.