提供有关不再需要任务队列时如何进行清理,以避免资源泄露的示例。 但是,不能立即发布任务队列。 必须先终止并刷新,以确保其进行的任何查询都已运行,然后释放。
终止调用可设置为等待或立即返回。 如果没有等待回调,可以选择指定它在终止完全结束时收到通知。 如果存在任何手动端口,则在返回调度函数之前,必须继续调度这些端口。
XTaskQueueTerminate(taskQueue, false, nullptr, nullptr);
bool result;
do
{
result = XTaskQueueDispatch(taskQueue, XTaskQueuePort::Completion, INFINITE);
} while (result == true);
XTaskQueueCloseHandle(taskQueue);
此示例通过使用 XTaskQueueTerminate 的等待参数以终止任务,但没有等待。
terminate
调用向每个端口添加一个回调,以检测队列何时清空。 为了解释此操作以及任何先前排队的回调,dispatch
会在调度返回false
之前持续调用它。