threadpool是基于boost库实现的一个线程池子库,
并没有纳入到boost库中,所以目前是在sourceforge开源的一个项目。
至于为什么boost有pool库有thread库而没有threadpool,这个不太了解。
但线程池实现起来不是很难,我看muduo也就花了100行代码就实现了,当然这是比较简单的,够用。
那我们从threadpool中又能学到什么东西呢?
首先,它是基于boost库实现的,如果大家对boost库有兴趣,看看一个简单的实现还是可以学到点东西的。
其次,它的代码量不多,大概2k左右,逻辑也算简单。
threadpool基本功能
1、任务封装,包括普通任务(task_func)和优先级任务(prio_task_func)。
2、调度策略,包括fifo_scheduler(先进先出)、lifo_scheduler(后进先出)、prio_scheduler(优先级)。
3、结束策略,包括wait_for_all_tasks(全部任务等待)、wait_for_active_tasks(激活任务等待)、immediately(立即结束)。
4、动态修改线程池个数功能。
5、基于future封装的异步返回值获取功能。
具体源代码分析
quickstart分析(/threadpool/libs/threadpool/quickstart)
这个例子的代码很简单,但已经全部展示了线程池的核心内容,包括建立、调度、同步等操作。