> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XTaskQueueGetPort

> XTaskQueueGetPort

# XTaskQueueGetPort

지정된 포트에 대한 작업 큐 포트 핸들을 반환합니다.

## 구문

```cpp theme={null}
HRESULT XTaskQueueGetPort(  
         XTaskQueueHandle queue,  
         XTaskQueuePort port,  
         XTaskQueuePortHandle* portHandle  
)  
```

### 매개 변수

*queue*   \_In\_\
형식: XTaskQueueHandle

포트를 가져올 작업 큐입니다.

*port*   \_In\_\
형식: [XTaskQueuePort](/reference/system/xtaskqueue/enums/xtaskqueueport)

가져올 포트입니다.

*portHandle*   \_Out\_\
형식: XTaskQueuePortHandle\*

지정된 포트에 대한 작업 큐 포트 핸들입니다.

### 반환 값

형식: HRESULT

HRESULT 성공 또는 오류 코드입니다.

## 설명

<Note>이 함수는 시간에 민감한 스레드에서 호출하기에 안전하지 않습니다. 자세한 내용은 [시간에 민감한 스레드](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)를 참조하세요.</Note>

작업 큐 포트 핸들은 작업 큐가 소유하며 닫을 필요가 없습니다. 이러한 핸들은 복합 작업 큐를 만들 때 사용됩니다.

다음 예제에서는 작업 및 완료 포트 모두 원래 큐의 작업 포트를 사용하는 복합 큐를 만듭니다. 복합 작업 큐는 다른 큐의 일부로 구성된 작업 큐입니다. 복합 작업 큐는 한 비동기 작업이 다른 작업을 호출해야 하고 그 작업의 완료가 완료 스레드에서 사이클을 낭비해서는 안 되는 중간 단계일 때 유용합니다.

<Note>**SubmitCallback**은 [XTaskQueueSubmitCallback](/reference/system/xtaskqueue/functions/xtaskqueuesubmitcallback) 함수에 대한 코드 예제에서 정의된 도우미 함수입니다.</Note>

```cpp theme={null}
void CreatingCompositeQueue()
{
    XTaskQueueHandle queue;

    HRESULT hr = XTaskQueueCreate(
        XTaskQueueDispatchMode::ThreadPool, 
        XTaskQueueDispatchMode::Manual, 
        &queue);

    if (FAILED(hr))
    {
        printf("failed to create task queue: 0x%x\r\n", hr);
        return;
    }

    XTaskQueuePortHandle workPort;

    // Create a composite queue that uses the work port from
    // another queue for both work and completion ports.

    hr = XTaskQueueGetPort(queue, XTaskQueuePort::Work, &workPort);
    if (FAILED(hr))
    {
        printf("failed to get work port 0x%x\r\n", hr);
        XTaskQueueCloseHandle(queue);
        return;
    }

    XTaskQueueHandle compositeQueue;
    hr = XTaskQueueCreateComposite(workPort, workPort, &compositeQueue);
    if (FAILED(hr))
    {
        printf("failed to create composiute queue 0x%x\r\n", hr);
        XTaskQueueCloseHandle(queue);
        return;
    }

    // Use the queue as needed
    SubmitCallbacks(compositeQueue);

    // Wait a while for the callbacks to run
    Sleep(1000);

    XTaskQueueCloseHandle(compositeQueue);
    XTaskQueueCloseHandle(queue);
}
```

## 요구 사항

**헤더:** XTaskQueue.h

**라이브러리:** xgameruntime.lib

**지원 플랫폼:** Windows, XBOX One 제품군 콘솔 및 XBOX Series 콘솔

## 개념 문서

* [시간에 민감한 스레드](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## 함께 보기

[XTaskQueue 멤버](/reference/system/xtaskqueue/xtaskqueue_members)\
[비동기 프로그래밍 모델](/build/core-features/common/async/async-programming-model)\
[비동기 작업 큐 디자인](/build/core-features/common/async/async-task-queue-design)


## Related topics

- [XTaskQueuePort](/ko/reference/system/xtaskqueue/enums/xtaskqueueport.md)
- [XTaskQueue](/ko/reference/system/xtaskqueue/xtaskqueue_members.md)
- [XTaskQueueGetCurrentProcessTaskQueue](/ko/reference/system/xtaskqueue/functions/xtaskqueuegetcurrentprocesstaskqueue.md)
- [XTaskQueueCreateComposite](/ko/reference/system/xtaskqueue/functions/xtaskqueuecreatecomposite.md)
- [XTaskQueueDispatch](/ko/reference/system/xtaskqueue/functions/xtaskqueuedispatch.md)
