> ## 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>Cette fonction ne peut pas être appelée en toute sécurité sur un thread sensible au temps. Pour plus d'informations, consultez [Threads sensibles au temps](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-CA/reference/system/xtaskqueue/functions/xtaskqueueclosehandle).

Une file d'attente de tâches possède un port de travail et un port 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-CA/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 au moyen de **XTaskQueueCreateComposite**. Prenons l'exemple d'une API dont l'implémentation doit appeler une autre API qui utilise une file d'attente de tâches. Vous voudrez peut-être rediriger le rappel d'achèvement de l'API afin qu'il ne monopolise 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 sensibles au temps](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## Voir aussi

[Membres de XTaskQueue](/fr-CA/reference/system/xtaskqueue/xtaskqueue_members)\
[Modèle de programmation asynchrone](/fr-CA/build/core-features/common/async/async-programming-model)\
[Conception de la file d'attente de tâches asynchrones](/fr-CA/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)
