線程池API
線程池應用程序編程接口(API)使用基于對象的設計。以下每個對象都由用戶模式數據結構表示:
- 池對象是一組可用于執行工作的工作線程。每個進程可以根據需要創建具有不同特征的多個隔離池。每個進程都有一個默認池。
- 清理組與一組回調生成對象相關聯。存在等待并釋放作為每個清理組成員的所有對象的函數。這使應用程序無需跟蹤它創建的所有對象。
- 將工作對象分配給池,并可選擇分配給清理組。它可以被發布,導致池中的工作線程執行其回調。工作對象可以有多個未完成的帖子;
每個都會產生一個回調。由于缺乏資源,后期操作不會失敗。 - 計時器對象控制回調的調度。每次計時器到期時,其回調都會發布到其工作池。由于缺乏資源,設置計時器不會失敗。
等待對象導致服務器線程在等待句柄上等待。在等待或超時期限到期后,服務員線程將等待對象的回調發布到等待的工作池。由于缺乏資源,設置等待不會失敗。 - I / O對象將文件句柄與線程池的I / O完成端口相關聯。當異步I / O操作完成時,工作線程會獲取操作的狀態并調用I /
O對象的回調。
下表描述了原始和當前線程池API的功能。
特征 | 原始API | 當前的API |
---|---|---|
同步 | RegisterWaitForSingleObject | CloseThreadpoolWait |
UnregisterWaitEx | CreateThreadpoolWait | |
SetThreadpoolWait | ||
WaitForThreadpoolWaitCallbacks | ||
工作 | QueueUserWorkItem | CloseThreadpoolWork |
CreateThreadpoolWork | ||
SubmitThreadpoolWork | ||
TrySubmitThreadpoolCallback | ||
WaitForThreadpoolWorkCallbacks | ||
計時器 | CreateTimerQueue | CloseThreadpoolTimer |
CreateTimerQueueTimer | CreateThreadpoolTimer | |
ChangeTimerQueueTimer | IsThreadpoolTimerSet | |
DeleteTimerQueueTimer | SetThreadpoolTimer | |
DeleteTimerQueueEx | WaitForThreadpoolTimerCallbacks | |
I / O | 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 |
相關話題
線程池
使用線程池功能