线程池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 |
相关话题
线程池
使用线程池功能