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