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

# XTaskQueueCreateComposite

> XTaskQueueCreateComposite

# XTaskQueueCreateComposite

Crea una cola de tareas compuesta por puertos de otras colas de tareas.

## Sintaxis

```cpp theme={null}
HRESULT XTaskQueueCreateComposite(  
         XTaskQueuePortHandle workPort,  
         XTaskQueuePortHandle completionPort,  
         XTaskQueueHandle* queue  
)  
```

### Parámetros

*workPort*   \_In\_\
Tipo: XTaskQueuePortHandle

El puerto que se usará para poner en cola las devoluciones de llamada de trabajo.

*completionPort*   \_In\_\
Tipo: XTaskQueuePortHandle

El puerto que se usará para poner en cola las devoluciones de llamada de finalización.

*queue*   \_Out\_\
Tipo: XTaskQueueHandle\*

La cola recién creada.

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

Las colas de tareas son objetos con recuento de referencias. Libere la referencia llamando a [XTaskQueueCloseHandle](/reference/system/xtaskqueue/functions/xtaskqueueclosehandle).

Una cola de tareas tiene puertos de trabajo y de finalización, y las tareas se pueden poner en cola en cualquiera de los dos puertos. Cada puerto se puede configurar con su propio modo de distribución.

En la mayoría de los escenarios, la cola de tareas se crea con la API [XTaskQueueCreate](/reference/system/xtaskqueue/functions/xtaskqueuecreate). Sin embargo, si está encadenando varias llamadas asincrónicas, a veces resulta útil crear una cola compuesta mediante **XTaskQueueCreateComposite**. Considere una API cuya implementación necesita invocar otra API que usa una cola de tareas. Es posible que quiera redirigir la devolución de llamada de finalización de la API para que no bloquee el subproceso de finalización del autor de la llamada. En este caso, puede crear una cola de tareas compuesta cuyos puertos de trabajo y de finalización se crean a partir del puerto de trabajo de otra cola.

En el ejemplo siguiente se crea una cola de tareas compuesta.

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

- [XTaskQueueCreate](/es/reference/system/xtaskqueue/functions/xtaskqueuecreate.md)
- [XTaskQueue](/es/reference/system/xtaskqueue/xtaskqueue_members.md)
- [Diseño de colas de tareas asincrónicas](/es/build/core-features/common/async/async-task-queue-design.md)
- [XTaskQueueDispatchMode](/es/reference/system/xtaskqueue/enums/xtaskqueuedispatchmode.md)
- [HCHttpCallCreate](/es/reference/live/httpclient/httpclient/functions/hchttpcallcreate.md)
