在Windows系统下使用线程池非常方便,在不考虑定制线程池的情况下,几行代码就可以编写一个简易且高效的线程池,本文分别列举了两种Windows系统下线程池的使用方法,以满足不同的需求:1、简单使用线程池;2、定制线程池;3、封装线程池类;
简单使用线程池确实很容易,几行代码加个注释应该就能明白了;
- #include
- #include
- #include
-
- struct TaskParam
- {
- //数据
- int data;
-
- //工作项
- PTP_WORK pWorkItem;
- };
-
- //线程池测试
-
- //线程池回调函数
- VOID NTAPI TaskHandler(
- _Inout_ PTP_CALLBACK_INSTANCE Instance,
- _Inout_opt_ PVOID Context,
- _Inout_ PTP_WORK Work
- )
- {
- TaskParam *pParam = (TaskParam*)Context;
- if (pParam)
- {
- printf("ThreadID:%0x,data=%d\n", GetCurrentThreadId(), pParam->data);
- //如果任务没有完成,会异步释放,如果任务完成则会立即释放
- CloseThreadpoolWork(pParam->pWorkItem);
- delete pParam;
- }
-
- Sleep(2000);
- }
-
- int main()
- {
- for (int i = 0; i &l