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



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

理想情况下,我想唤醒延迟的任务,但不会受到在当前线程中处理任务的打击。

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

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

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

相关内容

  • 没有找到相关文章

最新更新