Partager via


Fonction RtwqAllocateSerialWorkQueue (rtworkq.h)

Crée une file d’attente de travail virtuelle au-dessus d’une autre file d’attente de travail qui est garantie pour sérialiser les éléments de travail. La file d’attente de travail série encapsule une file d’attente de travail multithread existante. La file d’attente de travail série applique un ordre d’exécution premier entré, premier sorti (FIFO).

Syntaxe

HRESULT RtwqAllocateSerialWorkQueue(
  [in]  DWORD workQueueIdIn,
  [out] DWORD *workQueueIdOut
);

Paramètres

[in] workQueueIdIn

Identificateur d’une file d’attente de travail existante. Il doit s’agir d’une file d’attente multithread ou d’une autre file d’attente de travail série. L’un des éléments suivants peut être utilisé :

  • File d’attente de travail par défaut (RTWQ_STANDARD_WORKQUEUE). Voir RTWQ_WORKQUEUE_TYPE.
  • File d’attente multithread de la plateforme (RTWQ_MULTITHREADED_WORKQUEUE). Voir RTWQ_WORKQUEUE_TYPE.
  • File d’attente multithread retournée par la fonction RtwqLockSharedWorkQueue .
  • File d’attente série créée par la fonction RtwqAllocateSerialWorkQueue .

[out] workQueueIdOut

Reçoit un identificateur pour la nouvelle file d’attente de travail série. Utilisez cet identificateur lors de la mise en file d’attente d’éléments de travail.

Valeur retournée

Cette fonction peut retourner l’une de ces valeurs.

Code de retour Description
S_OK
La fonction a réussi.
E_FAIL
L’application a dépassé le nombre maximal de files d’attente de travail.
RTWQ_E_SHUTDOWN
L’application n’a pas appelé RtwqStartup, ou l’application a déjà appelé RtwqShutdown.

Remarques

Lorsque vous avez terminé d’utiliser la file d’attente de travail, appelez RtwqUnlockWorkQueue.

Les files d’attente multithread utilisent un pool de threads, ce qui peut réduire le nombre total de threads dans le pipeline. Toutefois, ils ne sérialisent pas les éléments de travail. Une file d’attente de travail série permet à l’application d’obtenir les avantages du pool de threads, sans avoir besoin d’effectuer une sérialisation manuelle de ses propres éléments de travail.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête rtworkq.h
Bibliothèque Rtworkq.lib
DLL RTWorkQ.dll

Voir aussi

RTWQ_WORKQUEUE_TYPE