Delen via


Thread Pool-API

De Thread Pool Application Programming Interface (API) maakt gebruik van een ontwerp op basis van objecten. Elk van de volgende objecten wordt vertegenwoordigd door een gegevensstructuur in de gebruikersmodus:

  • Een poolobject is een set werkthreads die kunnen worden gebruikt om werk uit te voeren. Elk proces kan indien nodig meerdere geïsoleerde pools met verschillende kenmerken maken. Er is ook een standaardgroep voor elk proces.
  • Een opschoningsgroep is gekoppeld aan een set callback-genererende objecten. Functies bestaan om te wachten en alle objecten vrij te geven die lid zijn van elke opschoningsgroep. Hierdoor kan de toepassing niet alle objecten bijhouden die zijn gemaakt.
  • Een werkobject wordt toegewezen aan een groep en optioneel aan een opschoongroep. Het kan worden gepost, waardoor een werkrolthread uit de pool de callback kan uitvoeren. Een werkobject kan meerdere berichten openstaand hebben; elk genereert een callback. De postbewerking kan niet mislukken vanwege een gebrek aan resources.
  • Een timerobject bepaalt de planning van callbacks. Telkens wanneer een timer verloopt, wordt de callback naar de werkrolgroep geplaatst. Het instellen van een timer kan niet mislukken vanwege een gebrek aan resources.
  • Een wachtobject zorgt ervoor dat een oberthread op een wachtbare ingang wacht. Nadat de wachttijd is voldaan of de time-outperiode is verlopen, plaatst de oberthread de callback van de wachtobjecten in de werkrolgroep van de wacht. Het instellen van een wachttijd kan niet mislukken vanwege een gebrek aan resources.
  • Een I/O-object koppelt een bestandsgreep aan de I/O-voltooiingspoort voor de threadpool. Wanneer een asynchrone I/O-bewerking is voltooid, haalt een werkrolthread de status van de bewerking op en roept de callback van het I/O-object aan.

In de volgende tabel worden de functies van de oorspronkelijke en huidige THREAD-pool-API's beschreven.

Gelaatstrek Oorspronkelijke API Huidige API
Synch RegisterWaitForSingleObject
Registratie vanWaitEx- ongedaan maken
CloseThreadpoolWait-
CreateThreadpoolWait-
SetThreadpoolWait-
WaitForThreadpoolWaitCallbacks
Werk QueueUserWorkItem-
CloseThreadpoolWork-
CreateThreadpoolWork-
SubmitThreadpoolWork-
TrySubmitThreadpoolCallback-
WaitForThreadpoolWorkCallbacks
Timer CreateTimerQueue-
CreateTimerQueueTimer-
ChangeTimerQueueTimer-
DeleteTimerQueueTimer-
DeleteTimerQueueEx-
CloseThreadpoolTimer-
CreateThreadpoolTimer-
IsThreadpoolTimerSet
SetThreadpoolTimer-
WaitForThreadpoolTimerCallbacks
I/O BindIoCompletionCallback-
CancelThreadpoolIo-
CloseThreadpoolIo-
CreateThreadpoolIo-
StartThreadpoolIo-
WaitForThreadpoolIoCallbacks
Groep opschonen CloseThreadpoolCleanupGroup
CloseThreadpoolCleanupGroupMembers
CreateThreadpoolCleanupGroup
Poel CloseThreadpool-
CreateThreadpool-
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum-
Callback-omgeving DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary-
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority-
SetThreadpoolCallbackRunsLong
Callback CallbackMayRunLong
Terugbellen opschonen OntkoppelenCurrentThreadFromCallback-
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

threadpools

de threadgroepfuncties gebruiken