threadpool源码分析

本文详细分析了基于Boost库的线程池库threadpool的实现,包括任务封装、调度策略、结束策略等。它使用了fifo_scheduler、lifo_scheduler和prio_scheduler,并提供了wait_for_all_tasks和wait_for_active_tasks等结束策略。通过实例展示了如何创建、调度任务并等待任务完成。此外,还介绍了线程池的核心组件如任务队列、线程封装和条件变量的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
这个例子的代码很简单,但已经全部展示了线程池的核心内容,包括建立、调度、同步等操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值