Windows PPL(C ++):这是测试任务是否完成的正确方法吗?

时间:2016-09-05 12:24:10

标签: windows winrt-async ppl

这是测试任务是否完成的正确方法吗?

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;
    }
}

1 个答案:

答案 0 :(得分:0)

虽然task::is_done是测试任务是否完成的正确方法,但我建议不要使用它。如果is_done返回false,那么当您开始对该事实采取行动时,该任务可能已经完成。这个功能非常活泼,更不用说这个功能可能需要一些同步,这可能会减慢程序的速度。

相反,只需链接延续或使用co_await。在那里完成任务。

相关问题