2016-09-05 46 views

回答

0

虽然task::is_done是测试任务完成后,我建议不使用它的正确方法。如果is_done返回false,则在您开始处理该事实时,该任务可能已经完成。这个功能非常活泼,更不用说这个功能可能需要一些同步,这可能会减慢程序。

相反,只是连续续订或使用co_await。处理完成任务。

+0

我在同步代码中使用异步API(XboxLive)(我无法对此做任何事情)。这是一个函数的一部分,用于测试在开始新操作之前是否完成了以前的任何操作。由于我基本上没有关于concurrecy RT的知识(我正在阅读关于它的内容),我的第一个解决方案是在异步操作开始之前设置一个变量并在.then中将该变量设置为false。 – Zingam

+0

@Zingam不好主意。连锁这些任务,而不是问他们是否完成。 –

+0

我怎么能这样做?我正在实现一个接口(虚函数)getInfoAsync(),isAsyncComplete(),getRangeAsync()。这种情况下的异步意味着这些任务正在单独的线程中运行。它们由触发系统调用。这些接口已经为几个不同的平台和不同的API实现。无论如何,我会记住你的建议。 – Zingam

相关问题