Правильно ли это проверить, выполняется ли задание?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 (я читаю об этом, поскольку я иду), моим первым решением было установить переменную перед запуском асинхронной операции и установкой переменной на false в .then. – Zingam
@ Zingam плохая идея. эти задачи, а не спрашивать их, если они сделаны. –
Как я мог это сделать? Я реализую интерфейс (виртуальные функции) getInfoAsync(), isAsyncComplete(), getRangeAsync(). Async в этом случае означает, что эти задачи выполняются в отдельном потоке. Они вызывается триггерной системой. Эти интерфейсы уже реализованы для нескольких разных платформ и разных API. Во всяком случае, я буду помнить ваш совет. – Zingam