0
这是测试任务是否完成的正确方法吗?Windows PPL(C++):这是测试任务是否完成的正确方法吗?
const concurrency::task<void> voidTask;
if (voidTask != m_getInfoAsync)
{
if (!m_getInfoAsync.is_done())
{
return 0;
}
}
if (voidTask != m_getRangeAsync)
{
if (!m_getRangeAsync.is_done())
{
return 0;
}
}
我在同步代码中使用异步API(XboxLive)(我无法对此做任何事情)。这是一个函数的一部分,用于测试在开始新操作之前是否完成了以前的任何操作。由于我基本上没有关于concurrecy RT的知识(我正在阅读关于它的内容),我的第一个解决方案是在异步操作开始之前设置一个变量并在.then中将该变量设置为false。 – Zingam
@Zingam不好主意。连锁这些任务,而不是问他们是否完成。 –
我怎么能这样做?我正在实现一个接口(虚函数)getInfoAsync(),isAsyncComplete(),getRangeAsync()。这种情况下的异步意味着这些任务正在单独的线程中运行。它们由触发系统调用。这些接口已经为几个不同的平台和不同的API实现。无论如何,我会记住你的建议。 – Zingam