작업 큐 정리 예제
이 항목은 더 이상 필요하지 않은 작업 큐를 정리하여 리소스 누수를 방지하는 방법에 대한 예제를 제공합니다. 그러나 작업 큐를 바로 해제할 수는 없습니다. 반드시 먼저 종료하고 플러시하여 대기열에 포함된 항목이 실행되었는지 확인한 다음 해제해야 합니다.
호출 종료는 대기 또는 즉시 반환으로 설정될 수 있습니다. 콜백이 대기 중이 아닌 경우 종료가 완료되면 알림을 받도록 선택적으로 지정할 수 있습니다. 수동 포트의 경우 디스패치 함수를 반환할 때까지 계속 디스패치되어야 합니다.
XTaskQueueTerminate(taskQueue, false, nullptr, nullptr);
bool result;
do
{
result = XTaskQueueDispatch(taskQueue, XTaskQueuePort::Completion, INFINITE);
} while (result == true);
XTaskQueueCloseHandle(taskQueue);
이 예에서는 작업 큐가 종료되지만 XTaskQueueTerminate wait 매개 변수를 사용하여 대기하지는 않습니다.
terminate
호출은 큐가 비었을 때 탐지할 각 포트에 콜백을 하나 추가합니다. 이 문제와 이전에 대기 중인 콜백을 확인하기 위해 false
을(를) 반환할 때까지 dispatch
이(가) 계속 호출됩니다.