Partilhar via


API do pool de threads

A interface de programação de aplicativos (API) do pool de threads usa um design baseado em objeto. Cada um dos seguintes objetos é representado por uma estrutura de dados de modo de usuário:

  • Um objeto de pool é um conjunto de threads de trabalho que podem ser usados para executar trabalho. Cada processo pode criar vários pools isolados com características diferentes, conforme necessário. Há também um pool padrão para cada processo.
  • Um grupo de limpeza está associado a um conjunto de objetos geradores de retorno de chamada. As funções existem para aguardar e liberar todos os objetos que são membros de cada grupo de limpeza. Isso libera o aplicativo de manter o controle de todos os objetos que criou.
  • Um objeto de trabalho é atribuído a um pool e, opcionalmente, a um grupo de limpeza. Ele pode ser postado, fazendo com que um thread de trabalho do pool execute seu retorno de chamada. Um objeto de trabalho pode ter várias postagens pendentes; cada um gera um retorno de chamada. A pós-operação não pode falhar por falta de recursos.
  • Um objeto de temporizador controla o agendamento de retornos de chamada. Cada vez que um temporizador expira, seu retorno de chamada é postado em seu pool de trabalhadores. A definição de um temporizador não pode falhar devido à falta de recursos.
  • Um objeto de espera faz com que um thread de garçom aguarde em uma alça de espera. Depois que a espera for satisfeita ou o período de tempo limite expirar, o thread do garçom posta o retorno de chamada dos objetos de espera para o pool de trabalhadores da espera. Definir uma espera não pode falhar devido à falta de recursos.
  • Um objeto de E/S associa um identificador de arquivo à porta de conclusão de E/S para o pool de threads. Quando uma operação de E/S assíncrona é concluída, um thread de trabalho pega o status da operação e chama o retorno de chamada do objeto de E/S.

A tabela a seguir descreve os recursos das APIs de pool de threads originais e atuais.

Funcionalidade Original API API atual
Sincronização RegisterWaitForSingleObject
UnregisterWaitEx
CloseThreadpoolWait
CreateThreadpoolWait
SetThreadpoolWait
WaitForThreadpoolWaitCallbacks
Trabalho QueueUserWorkItem
CloseThreadpoolWork
CreateThreadpoolWork
SubmitThreadpoolWork
TrySubmitThreadpoolCallback
WaitForThreadpoolWorkCallbacks
Temporizador CreateTimerQueue
CreateTimerQueueTimer
ChangeTimerQueueTimer
DeleteTimerQueueTimer
DeleteTimerQueueEx
CloseThreadpoolTimer
CreateThreadpoolTimer
IsThreadpoolTimerSet
SetThreadpoolTimer
WaitForThreadpoolTimerCallbacks
E/S BindIoCompletionCallback
CancelThreadpoolIo
CloseThreadpoolIo
CreateThreadpoolIo
StartThreadpoolIo
WaitForThreadpoolIoCallbacks
Grupo de limpeza CloseThreadpoolCleanupGroup
CloseThreadpoolCleanupGroupMembros
CreateThreadpoolCleanupGroup
Esplanada CloseThreadpool
CreateThreadpool
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum
Ambiente de retorno de chamada DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority
SetThreadpoolCallbackRunsLong
Retorno de chamada CallbackMayRunLong
Limpeza de retorno de chamada DisassociateCurrentThreadFromCallback
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

Pools de threads

Usando as funções do pool de threads