다음을 통해 공유


XTaskQueueSetCurrentProcessTaskQueue

제공된 작업 큐를 프로세스 전체 작업 큐로 설정합니다.

구문

void XTaskQueueSetCurrentProcessTaskQueue(  
         XTaskQueueHandle queue  
)  

매개 변수

queue _In_
형식: XTaskQueueHandle

프로세스의 기본 작업 큐로 설정할 큐입니다.

반환 값

형식: void

설명

참고 항목

이 함수는 시간에 민감한 스레드에서 호출하는 것이 안전하지 않습니다. 자세한 내용은 시간에 민감한 스레드를 참조하세요.

큐를 nullptr로 설정할 수 있으며, 이 경우 XTaskQueueGetCurrentProcessTaskQueue도 nullptr을 반환합니다. 제공된 큐에 해당 핸들이 중복되고 모든 기존 프로세스 작업 큐에서는 해당 핸들이 닫힙니다.

다음 예에서는 기본 프로세스 작업 큐를 바꿉니다. 이 작업 큐는 작업 및 완료 디스패치 모두에 대한 스레드 풀을 사용합니다. 작업 큐 매개 변수를 사용하는 Microsoft GDK(게임 개발 키트) API는 모두 nullptr을 수락하고 프로세스 작업 큐를 대체합니다. 프로세스 작업 큐를 nullptr로 설정할 수도 있습니다. 이 경우 작업 큐 매개 변수가 필요한 Microsoft GDK(게임 개발 키트) API에 null이 제공되면 E_NO_TASK_QUEUE 오류가 발생합니다. 이렇게 하면 Microsoft GDK(게임 개발 키트) API가 기본값으로 작동하는 동시에 필요한 경우 작업 큐 핸들을 엄격하게 제어할 수 있습니다.

void UsingProcessTaskQueue()
{
    XTaskQueueHandle queue = nullptr;
    XTaskQueueGetCurrentProcessTaskQueue(&queue);

    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;
    }
}

요건

헤더: XTaskQueue.h

라이브러리: xgameruntime.lib

지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

XTaskQueue 멤버
비동기 프로그래밍 모델
비동기 작업 큐 디자인