Dela via


API för trådpool

Programgränssnittet för trådpoolen (API) använder en objektbaserad design. Vart och ett av följande objekt representeras av en datastruktur i användarläge:

  • Ett poolobjekt är en uppsättning arbetstrådar som kan användas för att utföra arbete. Varje process kan skapa flera isolerade pooler med olika egenskaper efter behov. Det finns också en standardpool för varje process.
  • En rensningsgrupp är associerad med en uppsättning återanropsgenererande objekt. Funktioner finns för att vänta på och frigöra alla objekt som är medlemmar i varje rensningsgrupp. Detta gör att programmet inte kan hålla reda på alla objekt som det har skapat.
  • Ett arbetsobjekt tilldelas till en pool och eventuellt till en rensningsgrupp. Den kan publiceras, vilket gör att en arbetstråd från poolen kör återanropet. Ett arbetsobjekt kan ha flera utestående inlägg. varje genererar ett återanrop. Det går inte att misslyckas efter åtgärden på grund av brist på resurser.
  • Ett tidsinställt objekt styr schemaläggningen av återanrop. Varje gång en timer upphör att gälla publiceras återanropet till arbetspoolen. Det går inte att ställa in en timer på grund av resursbrist.
  • Ett vänteobjekt gör att en servitörtråd väntar på ett väntebart handtag. När väntetiden har uppfyllts eller tidsgränsen upphör att gälla skickar servitörtråden vänteobjektens motringning till väntearbetspoolen. Det går inte att ställa in en väntetid på grund av resursbrist.
  • Ett I/O-objekt associerar ett filhandtag med I/O-slutförandeporten för trådpoolen. När en asynkron I/O-åtgärd slutförs, hämtar en arbetstråd statusen för åtgärden och anropar I/O-objektets återanrop.

I följande tabell beskrivs funktionerna i api:erna för den ursprungliga och aktuella trådpoolen.

Drag Ursprungligt API Aktuellt API
Synch RegisterWaitForSingleObject
UnregisterWaitEx
CloseThreadpoolWait
CreateThreadpoolWait
SetThreadpoolWait
WaitForThreadpoolWaitCallbacks
Arbete 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
Rensningsgrupp CloseThreadpoolCleanupGroup
CloseThreadpoolCleanupGroupMembers
CreateThreadpoolCleanupGroup
Pöl CloseThreadpool
CreateThreadpool
SetThreadpoolThreadMaximum
SetThreadpoolThreadMinimum
Återanropsmiljö DestroyThreadpoolEnvironment
InitializeThreadpoolEnvironment
SetThreadpoolCallbackCleanupGroup
SetThreadpoolCallbackLibrary
SetThreadpoolCallbackPool
SetThreadpoolCallbackPriority
SetThreadpoolCallbackRunsLong
Motringning CallbackMayRunLong
Rensning av återanrop DisassociateCurrentThreadFromCallback
FreeLibraryWhenCallbackReturns
LeaveCriticalSectionWhenCallbackReturns
ReleaseMutexWhenCallbackReturns
ReleaseSemaphoreWhenCallbackReturns
SetEventWhenCallbackReturns

 

trådpooler

Använda för trådpoolsfunktioner