POCO C++ 库学习和分析 -- 线程 (二)
3. 线程池
3.1 线程池的基本概念
首先我们来明确线程池的一些概念。
什么是线程池?线程池的好处?
池的英文名: POOL ,可以被理解成一个容器。线程池就是放置线程对象的容器。我们知道线程的频繁
创建、销毁,是需要耗费一点的系统资源的,如果能够预先创建一系列空线程,在需要使用线程时侯,从线程
池里,直接获取 IDLE 线程,则省去了线程创建的过程,当有频繁的线程出现的时候对性能有比较大的好处,
程序执行起来将非常效率。
什么时候推荐使用线程池?
很明显,线程越频繁的被创建和释放,越是能体现出线程池的作用。这时候当然推荐使用线程池。
什么时候不推荐使用线程池?
推荐线程池使用的反面情况喽。
比如长时间运行的线程(线程运行的时间越长,其创建和销毁的开销在其生命周期中比重越低)。
需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它。因为
线程池中的线程都是平等的。
线程池需要具备的元素
线程池要有列表,可以用来管理多个线程对象。
线程池中的线程,具体执行的内容,可自定义。
线程池中的线程,使用完毕后,还能被收回,供下次使用。
线程池要提供获取空闲( IDLE )线程方法。当然这个方法可以被封装在线程池中,成为其内部
接口。
3.2 Poco 中线程池实现
先看一看 Poco 中内存池的类图吧。