Поделиться через


API пула потоков

Интерфейс программирования приложений пула потоков (API) использует объектную структуру. Каждая из следующих объектов представлена структурой данных в пользовательском режиме:

  • Объект пула — это набор рабочих потоков, которые можно использовать для выполнения работы. Каждый процесс может создавать несколько изолированных пулов с разными характеристиками при необходимости. Для каждого процесса также существует пул по умолчанию.
  • Группа очистки связана с набором объектов обратного вызова. Функции существуют для ожидания и освобождения всех объектов, являющихся членами каждой группы очистки. Это освобождает приложение от отслеживания всех созданных объектов.
  • Рабочий объект назначается пулу и при необходимости группе очистки. Его можно опубликовать, что приводит к выполнению обратного вызова рабочего потока из пула. Рабочий объект может содержать несколько невыполненных записей; каждый создает обратный вызов. Операция после операции не может завершиться ошибкой из-за нехватки ресурсов.
  • Объект таймера управляет планированием обратных вызовов. Каждый раз, когда истекает срок действия таймера, обратный вызов отправляется в свой рабочий пул. Установка таймера не может завершиться ошибкой из-за нехватки ресурсов.
  • Объект ожидания вызывает ожидание потока официанта в дескрипторе ожидания. После завершения ожидания или истечения срока ожидания поток официанта отправляет обратный вызов объектов ожидания в рабочий пул ожидания. Установка ожидания не может завершиться ошибкой из-за нехватки ресурсов.
  • Объект ввода-вывода связывает дескриптор файла с портом завершения ввода-вывода для пула потоков. После завершения асинхронной операции ввода-вывода рабочий поток выбирает состояние операции и вызывает обратный вызов объекта ввода-вывода.

В следующей таблице описываются функции исходных и текущих API пула потоков.

Особенность Исходный API Текущий API
Синхронизировать RegisterWaitForSingleObject
UnregisterWaitEx
CloseThreadpoolWait
CreateThreadpoolWait
SetThreadpoolWait
WaitForThreadpoolWaitCallbacks
Работа QueueUserWorkItem
CloseThreadpoolWork
CreateThreadpoolWork
SubmitThreadpoolWork
TrySubmitThreadpoolCallback
WaitForThreadpoolWorkCallbacks
Таймер CreateTimerQueue
CreateTimerQueueTimer
ChangeTimerQueueTimer
DeleteTimerQueueTimer
DeleteTimerQueueEx
CloseThreadpoolTimer
CreateThreadpoolTimer
IsThreadpoolTimerSet
SetThreadpoolTimer
WaitForThreadpoolTimerCallbacks
ВВОД-ВЫВОД BindIoCompletionCallback
CancelThreadpoolIo
CloseThreadpoolIo
CreateThreadpoolIo
StartThreadpoolIo
WaitForThreadpoolIoCallbacks
Группа очистки CloseThreadpoolCleanupGroup
CloseThreadpoolCleanupGroupMembers
CreateThreadpoolCleanupGroup
Бассейн CloseThreadpool
CreateThreadpool
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum
Среда обратного вызова DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority
SetThreadpoolCallbackRunsLong
Обратный вызов CallbackMayRunLong
Очистка обратного вызова disassociateCurrentThreadFromCallback
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

пулы потоков

использование функций пула потоков