Windows线程池

线程池的目的是为了减少创建和销毁线程的额外开销,利用已经存在的线程多次循环执行多个任务而提高系统的处理能力。

MS是从Windows 2000开始引入线程池API的。Vista之后有升级,向下兼容,也就是说之前线程池的API完全可用。

有4种模式的线程池

模式
关键API
Vista之后
异步方法调用

2种使用方式:

1) TrySubmitThreadpoolCallback

2) CreateThreadpoolWork + SubmitThreadpoolWork + WaitForThreadpoolWorkCallbacks+CloseThreadpoolWork


定时(at a timed interval)调用
CreateThreadpoolTimer+SetThreadpoolTimer+WaitForThreadpoolTimerCallbacks+CloseThreadpoolWork

内核对象激活(signaled)
CreateThreadpoolWait+SetThreadpoolWait+WaitForMultipleObjects+CloseThreadpoolWork

异步I/O请求结束后调用函数

CreateThreadpoolIo+StartThreadpoolIo+CancelThreadpoolIo+CloseThreadpoolIo

WaitForThreadpoolIoCallbacks



异步方法调用
QueueUserWorkItem
×
定时(at a timed interval)调用

CreateTimerQueue+CreateTimerQueueTimer+DeleteTimerQueueTimer

ChangeTimerQueueTimer

×
内核对象激活(signaled)
RegisterWaitForSingleObject+UnregisterWaitEx
×
异步I/O请求结束后调用函数
BindIoCompletionCallback
×

你可能感兴趣的:(Windows线程池)