Compartilhar via


API do pool de threads

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

  • Um objeto de pool é um conjunto de threads de trabalho que podem ser usados para executar o 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. Existem funções 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 ele 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 devido à falta de recursos.
  • Um objeto de temporizador controla o agendamento de retornos de chamada. Sempre que um temporizador expira, seu retorno de chamada é postado no pool de trabalho. A configuraçã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 um identificador de espera. Depois que a espera for atendida ou o período de tempo limite expirar, o thread do garçom postará o retorno de chamada dos objetos de espera no pool de trabalho da espera. A configuração de 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 do pool de threads. Quando uma operação de E/S assíncrona for concluída, um thread de trabalho obterá o status da operação e chamará o retorno de chamada do objeto de E/S.

A tabela a seguir descreve os recursos das APIs do pool de threads original e atual.

Característica Original API API atual
Sincronia 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
CloseThreadpoolCleanupGroupMembers
CreateThreadpoolCleanupGroup
Piscina CloseThreadpool
CreateThreadpool
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum
Ambiente de retorno de chamada DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority
SetThreadpoolCallbackRunsLong
Callback CallbackMayRunLong
Limpeza do retorno de chamada DisassociateCurrentThreadFromCallback
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

pools de threads

usando as funções do pool de threads