> ## 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

Devuelve el identificador del puerto de la cola de tareas para el puerto especificado.

## Sintaxis

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

### Parámetros

*queue*   \_In\_\
Tipo: XTaskQueueHandle

La cola de tareas de la que se obtendrá el puerto.

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

El puerto que se obtendrá.

*portHandle*   \_Out\_\
Tipo: XTaskQueuePortHandle\*

El identificador del puerto de la cola de tareas para el puerto especificado.

### Valor devuelto

Tipo: HRESULT

Código de error o de éxito HRESULT.

## Comentarios

<Note>No es seguro llamar a esta función en un subproceso sensible al tiempo. Para obtener más información, consulte [Subprocesos sensibles al tiempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

Los identificadores de puerto de la cola de tareas pertenecen a la cola de tareas y no es necesario cerrarlos. Se usan al crear colas de tareas compuestas.

En el ejemplo siguiente se crea una cola compuesta cuyos puertos de trabajo y de finalización usan ambos el puerto de trabajo de la cola original. Una cola de tareas compuesta es una cola de tareas que se compone de partes de otras colas. Las colas de tareas compuestas son útiles cuando una tarea asincrónica necesita llamar a otra, y la finalización de esa tarea es un paso intermedio que no debería desperdiciar ciclos en el subproceso de finalización.

<Note>**SubmitCallback** es una función auxiliar que se define en el ejemplo de código de la función [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);
}
```

## Requisitos

**Encabezado:** XTaskQueue.h

**Biblioteca:** xgameruntime.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Documentación conceptual

* [Subprocesos sensibles al tiempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## Consulte también

[Miembros de XTaskQueue](/reference/system/xtaskqueue/xtaskqueue_members)\
[Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model)\
[Diseño de la cola de tareas asincrónicas](/build/core-features/common/async/async-task-queue-design)


## Related topics

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