我们知道,线程的频繁创建和销毁是比较消耗系统资源的,因此,OS在处理一些任务时,发明了线程池(ThreadPool)这个东西。线程池是若干线程的容器,负责调度和管理这些线程,而这些线程用于处理一些事物请求。有了线程池,我们很多情况下不需要自己createthread。
线程池需要具备的几个元素
1) 线程池要有个列表,来管理多个线程对象。
2) 线程池要提供获取空闲(IDLE)线程方法
3) 线程池中的线程,具体执行的内容,可自定义。
4) 线程池中的线程,使用完毕后,还能被收回,供下次使用。
这个图是线程池的简单示意:
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Thread_pool.svg/400px-Thread_pool.svg.png)
下面是一些线程池的API,分别是适用于vista和以前的OS版本。
Feature | Original API(XP) | Current API |
Synch | ||
Work | ||
Timer | ||
I/O | ||
Clean-up group | ||
Pool | ||
Callback environment | InitializeThreadpoolEnvironment | |
Callback | ||
Callback clean up | DisassociateCurrentThreadFromCallback FreeLibraryWhenCallbackReturns LeaveCriticalSectionWhenCallbackReturns ReleaseMutexWhenCallbackReturns |