방법: 프로세스 작업 큐 사용
예시
기본 프로세스 작업 큐는 작업과 완료 디스패치 둘 다에 스레드 풀을 사용합니다. 작업 큐 매개 변수를 사용하는 Microsoft GDK(게임 개발 키트) API는 모두 nullptr
을 수락하고 프로세스 작업 큐를 대체합니다. 바꿀 수 있습니다. 프로세스 작업 큐를 nullptr
(으)로 설정할 수도 있습니다. 이 경우 작업 큐 매개 변수가 필요한 Microsoft GDK(게임 개발 키트) API는 E_NO_TASK_QUEUE
에서 오류가 발생합니다. 이렇게 하면 Microsoft GDK(게임 개발 키트) API가 기본값으로 작동하는 동시에 필요한 경우 작업 큐 핸들을 엄격하게 제어할 수 있습니다.
다음 예제에서는 프로세스 작업 큐를 사용하는 방법을 보여 줍니다.
void UsingProcessTaskQueue()
{
XTaskQueueHandle queue = GetCurrentProcessTaskQueue();
auto callback = [](void*, bool)
{
printf("Work callback invoked.\r\n");
};
HRESULT hr = XTaskQueueSubmitCallback(
queue, XTaskQueuePort::Work,
nullptr, callback);
if (FAILED(hr))
{
printf("Failed to submit callback: %x\r\n", hr);
return;
}
// You can replace the process task queue.
hr = XTaskQueueCreate(
XTaskQueueDispatchMode::Manual,
XTaskQueueDispatchMode::Manual,
&queue);
if (FAILED(hr))
{
printf("Failed to create new task queue: %x\r\n", hr);
return;
}
XTaskQueueSetCurrentProcessTaskQueue(queue);
XTaskQueueHandle processQueue;
XTaskQueueGetCurrentProcessTaskQueue(&processQueue);
printf("Process task queue: %p. Our queue: %p\r\n",
processQueue, queue);
XTaskQueueCloseHandle(processQueue);
// You can set the process queue to nullptr to force everyone to pass a queue
// as a parameter.
XTaskQueueSetCurrentProcessTaskQueue(nullptr);
XTaskQueueGetCurrentProcessTaskQueue(&processQueue);
printf("Process task queue: %p.\r\n",
processQueue);
}