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

Crée une file d'attente de tâches composée de ports d'autres files d'attente de tâches.

## Syntaxe

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

### Paramètres

*workPort*   \_In\_\
Type : XTaskQueuePortHandle

Port à utiliser pour mettre en file d'attente les rappels de travail.

*completionPort*   \_In\_\
Type : XTaskQueuePortHandle

Port à utiliser pour mettre en file d'attente les rappels d'achèvement.

*queue*   \_Out\_\
Type : XTaskQueueHandle\*

File d'attente nouvellement créée.

### Valeur de retour

Type : HRESULT

Code de réussite ou d'erreur HRESULT.

## Remarques

<Note>Il n'est pas sûr d'appeler cette fonction sur un thread urgent. Pour plus d'informations, consultez [Threads urgents](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

Les files d'attente de tâches sont des objets avec décompte de références. Libérez la référence en appelant [XTaskQueueCloseHandle](/fr/reference/system/xtaskqueue/functions/xtaskqueueclosehandle).

Une file d'attente de tâches possède des ports de travail et d'achèvement, et des tâches peuvent être mises en file d'attente sur l'un ou l'autre port. Chaque port peut être configuré avec son propre mode de distribution.

Dans la plupart des scénarios, vous créez une file d'attente de tâches avec l'API [XTaskQueueCreate](/fr/reference/system/xtaskqueue/functions/xtaskqueuecreate). Toutefois, si vous enchaînez plusieurs appels asynchrones, il est parfois utile de créer une file d'attente composite via **XTaskQueueCreateComposite**. Prenons l'exemple d'une API dont l'implémentation doit invoquer une autre API qui utilise une file d'attente de tâches. Vous pouvez vouloir rediriger le rappel d'achèvement de l'API afin qu'il n'occupe pas le thread d'achèvement de l'appelant. Dans ce cas, vous pouvez créer une file d'attente de tâches composite dont les ports de travail et d'achèvement sont construits à partir du port de travail d'une autre file d'attente.

L'exemple suivant crée une file d'attente de tâches composite.

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

## Configuration requise

**En-tête :** XTaskQueue.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Documentation conceptuelle

* [Threads urgents](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## Voir aussi

[Membres XTaskQueue](/fr/reference/system/xtaskqueue/xtaskqueue_members)\
[Modèle de programmation asynchrone](/fr/build/core-features/common/async/async-programming-model)\
[Conception de la file d'attente de tâches asynchrones](/fr/build/core-features/common/async/async-task-queue-design)


## Related topics

- [XTaskQueueCreateComposite](/es/reference/system/xtaskqueue/functions/xtaskqueuecreatecomposite.md)
- [XTaskQueueCreate](/reference/system/xtaskqueue/functions/xtaskqueuecreate.md)
- [XTaskQueue](/reference/system/xtaskqueue/xtaskqueue_members.md)
- [Async task queue design](/build/core-features/common/async/async-task-queue-design.md)
- [Diseño de colas de tareas asincrónicas](/es/build/core-features/common/async/async-task-queue-design.md)
