Udostępnij za pośrednictwem


Interfejs API puli wątków

Interfejs programowania aplikacji puli wątków (API) używa projektu opartego na obiektach. Każdy z następujących obiektów jest reprezentowany przez strukturę danych trybu użytkownika:

  • Obiekt puli to zestaw wątków roboczych, których można użyć do wykonywania pracy. Każdy proces może w razie potrzeby utworzyć wiele izolowanych pul o różnych cechach. Istnieje również domyślna pula dla każdego procesu.
  • Grupa czyszczenia jest skojarzona z zestawem obiektów generujących wywołanie zwrotne. Funkcje istnieją, aby czekać i zwolnić wszystkie obiekty, które są elementami członkowskimi każdej grupy czyszczenia. Zwalnia to aplikację z śledzenia wszystkich utworzonych przez nią obiektów.
  • Obiekt roboczy jest przypisywany do puli i opcjonalnie do grupy oczyszczania. Można go opublikować, powodując wątek procesu roboczego z puli w celu wykonania wywołania zwrotnego. Obiekt roboczy może mieć wiele zaległych wpisów; każdy generuje wywołanie zwrotne. Operacja po operacji nie może zakończyć się niepowodzeniem z powodu braku zasobów.
  • Obiekt czasomierza kontroluje planowanie wywołań zwrotnych. Za każdym razem, gdy czasomierz wygaśnie, jego wywołanie zwrotne jest publikowane w puli procesów roboczych. Ustawienie czasomierza nie może zakończyć się niepowodzeniem z powodu braku zasobów.
  • Obiekt oczekiwania powoduje, że wątek kelnera czeka na oczekujące dojścia. Po spełnieniu oczekiwania lub wygaśnięciu limitu czasu wątek kelnera publikuje wywołanie zwrotne obiektów oczekiwania do puli procesów roboczych oczekiwania. Ustawienie oczekiwania nie może zakończyć się niepowodzeniem z powodu braku zasobów.
  • Obiekt we/wy kojarzy uchwyt pliku z portem uzupełniania we/wy dla puli wątków. Po zakończeniu operacji we/wy asynchronicznej wątek procesu roboczego pobiera stan operacji i wywołuje wywołanie zwrotne obiektu we/wy.

W poniższej tabeli opisano funkcje oryginalnych i bieżących interfejsów API puli wątków.

Cecha Oryginalny interfejs API Bieżący interfejs API
Synchronizacji RegisterWaitForSingleObject
unregisterWaitEx
CloseThreadpoolWait
CreateThreadpoolWait
SetThreadpoolWait
WaitForThreadpoolWaitCallbacks
Praca QueueUserWorkItem
CloseThreadpoolWork
CreateThreadpoolWork
SubmitThreadpoolWork
TrySubmitThreadpoolCallback
WaitForThreadpoolWorkCallbacks
Minutnik createTimerQueue
createTimerQueueTimer
ChangeTimerQueueTimer
DeleteTimerQueueTimer
DeleteTimerQueueEx
CloseThreadpoolTimer
CreateThreadpoolTimer
IsThreadpoolTimerSet
SetThreadpoolTimer
WaitForThreadpoolTimerCallbacks
We / wy BindIoCompletionCallback
CancelThreadpoolIo
CloseThreadpoolIo
CreateThreadpoolIo
StartThreadpoolIo
WaitForThreadpoolIoCallbacks
Grupa oczyszczania CloseThreadpoolCleanupGroup
CloseThreadpoolCleanupGroupMembers
CreateThreadpoolCleanupGroup
Basen CloseThreadpool
CreateThreadpool
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum
Środowisko wywołania zwrotnego DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority
SetThreadpoolCallbackRunsLong
Wywołania zwrotnego CallbackMayRunLong
Czyszczenie wywołania zwrotnego DisassociateCurrentThreadFromCallback
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

pule wątków

korzystanie z funkcji puli wątków