Windows下比较完美线程池的升级版,加入了我对线程池能想到的几乎所有功能,而且更改了第一版本的一些Bug,并进行了效率的优化。
第一版的介绍地址:http://blog.csdn.net/fishjam/article/details/8632049
功能列表如下:
1.能自动根据任务和线程的多少在 最小/最大 线程个数之间调整(Vista后的系统有 SetThreadpoolThreadMaximum 等函数有类似功能),现已支持动态改变最小、最大值。
2.可以设置等待Job的最大个数,并在加入Job时,队列满了的话,可以设置等待超时并根据返回值进一步处理
3.能方便的对任一任务进行取消,如任务尚未运行则由框架代码处理,如任务已经运行,则需要 JobBase 的子类根据 GetJobWaitType 的返回值进行处理
4.能对单个Job或整个线程池进行 暂停、继续、停止 处理 -- 需要 JobBase 的子类根据 GetJobWaitType 的返回值进行处理
5.支持回调方式的反馈通知( Progress/Error 等)
6.使用模版方式实现,能方便的进行参数传递
7.在加入任务时可以设置优先级,现已支持动态调整优先级
8.使用的是微软的基本API,能支持WinXP、Vista、Win7等各种操作系统(CreateThreadpoolWork 等只能在Vista后才能使用)
9.可以有多个实例,方便进行控制(QueueUserWorkItem 等是单实例)
10.采用的是对称模式的线程池(没有管理线程),运行成本低
1