다음을 통해 공유


방법: 프로세스 작업 큐 사용

예시

기본 프로세스 작업 큐는 작업과 완료 디스패치 둘 다에 스레드 풀을 사용합니다. 작업 큐 매개 변수를 사용하는 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);  
}  

참고 항목

작업 큐 디자인