Partager via


API pool de threads

L’interface de programmation d’applications du pool de threads (API) utilise une conception basée sur des objets. Chacun des objets suivants est représenté par une structure de données en mode utilisateur :

  • Un objet pool est un ensemble de threads de travail qui peuvent être utilisés pour effectuer un travail. Chaque processus peut créer plusieurs pools isolés avec des caractéristiques différentes si nécessaire. Il existe également un pool par défaut pour chaque processus.
  • Un groupe de nettoyage est associé à un ensemble d’objets de génération de rappel. Les fonctions existent pour attendre et libérer tous les objets membres de chaque groupe de nettoyage. Cela permet à l’application de suivre tous les objets qu’elle a créés.
  • Un objet de travail est affecté à un pool et éventuellement à un groupe de nettoyage. Il peut être publié, ce qui entraîne l’exécution d’un thread de travail à partir du pool. Un objet de travail peut avoir plusieurs billets en attente ; chacun génère un rappel. L’opération de publication ne peut pas échouer en raison d’un manque de ressources.
  • Un objet minuteur contrôle la planification des rappels. Chaque fois qu’un minuteur expire, son rappel est publié dans son pool de workers. La définition d’un minuteur ne peut pas échouer en raison d’un manque de ressources.
  • Un objet d’attente provoque l’attente d’un thread de serveur sur un handle pouvant être attendu. Une fois l’attente satisfaite ou la période d’expiration du délai d’attente, le thread du serveur publie le rappel des objets d’attente dans le pool de workers de l’attente. La définition d’une attente ne peut pas échouer en raison d’un manque de ressources.
  • Un objet d’E/S associe un handle de fichier au port d’achèvement des E/S pour le pool de threads. Lorsqu’une opération d’E/S asynchrone se termine, un thread de travail récupère l’état de l’opération et appelle le rappel de l’objet d’E/S.

Le tableau suivant décrit les fonctionnalités des API de pool de threads d’origine et actuelles.

Caractéristique API d’origine API actuelle
Synchronisation RegisterWaitForSingleObject
DésinscrireWaitEx
CloseThreadpoolWait
CreateThreadpoolWait
SetThreadpoolWait
WaitForThreadpoolWaitCallbacks
Travail queueUserWorkItem
CloseThreadpoolWork
CreateThreadpoolWork
SubmitThreadpoolWork
TrySubmitThreadpoolCallback
WaitForThreadpoolWorkCallbacks
Minuteur CreateTimerQueue
CreateTimerQueueTimer
changeTimerQueueTimer
DeleteTimerQueueTimer
DeleteTimerQueueEx
CloseThreadpoolTimer
CreateThreadpoolTimer
IsThreadpoolTimerSet
SetThreadpoolTimer
WaitForThreadpoolTimerCallbacks
E/S BindIoCompletionCallback
CancelThreadpoolIo
CloseThreadpoolIo
CreateThreadpoolIo
startThreadpoolIo
WaitForThreadpoolIoCallbacks
Groupe de nettoyage CloseThreadpoolCleanupGroup
CloseThreadpoolCleanupGroupMembers
CreateThreadpoolCleanupGroup
Mare closeThreadpool
CreateThreadpool
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum
Environnement de rappel DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority
SetThreadpoolCallbackRunsLong
Rappel CallbackMayRunLong
Nettoyage du rappel DisassociateCurrentThreadFromCallback
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

pools de threads

à l’aide des fonctions de pool de threads