汉阳网站建设公司,杭州百度竞价推广公司,常德交通网站,做画册好的网站执行与任务分离的组件— 线程池wangbojing/threadpoolgithub.com多线程技术主要解决了处理器单元内多个线程执行的问题#xff0c;它可以显著的减少处理器单元的闲置时间#xff0c;增加处理器单元的吞吐能力。线程池是多线程编程的一个必要组件#xff0c;并且对于很多编…执行与任务分离的组件— 线程池wangbojing/threadpoolgithub.com 多线程技术主要解决了处理器单元内多个线程执行的问题它可以显著的减少处理器单元的闲置时间增加处理器单元的吞吐能力。线程池是多线程编程的一个必要组件并且对于很多编程人员都是透明的更是神秘的。 线程池的概念是一个用来管理一组执行任务线程的工具。既然是管理工具那么该工具管理是用来管理任务与执行的。如图一线程池组件拓扑图执行队列Workers任务队列Jobs和池管理Pool Manager三部分组成。执行队列Workers是用来存放运行线程的队列。任务队列Jobs是用来存放需要被执行的任务队列。池管理Pool Manager主要是管理执行队列的执行顺序执行任务的时间长短对长时间没有使用的执行单元进行释放执行单元满负荷运行的时及时添加执行单元记录未执行的任务数量对新任务入队即将执行的任务出队等等。图一 线程池组件拓扑图执行队列Workers中的每一个执行单元Worker由哪些元素组成线程ID退出标志。任务队列Jobs中的每一个任务Jobs的组成元素执行每一个任务的具体执行函数每一个任务的执行参数。池管理Pool Manager由哪些元素组成每一个新任务添加与执行时的移除用的互斥锁每一个线程挂起的时所等待的条件变量。根据分析如图二线程池的类图。图二线程池的类图到这里一个简单的线程池就已经可以呼之欲出了。以下为实现代码#include 这样的线程池还是只是一个Demo原因有如下几点需要我们值得改进的。线程池的线程数量是确定的不能随着系统任务请求数量放缩线程池的大小。任务数量的统计并没有对任务队列进行统计执行任务中的线程数量等待执行的任务数量进行统计每一个执行任务的时间没有做限制IO密集型与计算密集型区分线程池非常常用但是根据不同的业务场景需要设置不同配置在用户任务执行函数里用户主动的调用了pthread_exit退出线程的保护机制针对于以上几点问题改进了一版线程池#include