代码拉取完成,页面将自动刷新
同步操作将从 louie/OEasyPool 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
简单的开源线程池,希望能得到你的喜欢。
这里主要介绍关于任务线程池的使用及结构。
Task (任务基类)
该类主要实现一个任务类 virtual int doWork() = 0;
TaskQueue (任务队列)
该类主要针对任务的存储、删除、撤回等状态做管理
ThreadPool (线程池)
整个线程池的核心业务处理类
关于任务线程池的扩展,我们已经提供了很好的解决方案。
例如继承 Task
类,来完成线程任务的扩展。
例如案例中 TaskTest.h
中使用的那样,将主要的业务逻辑放在 doWork 中即可。
关于线程池的配置,我们也留出了接口。
通过 OEThreadPool
类中的 tagThreadPoolConfig
结构体与 init
函数,进行线程池的资源配置。
代码中已经有了比较详尽的注释,但是在这里我还是想贴出来再强调一遍,虽然他很简单,但是看起来非常重要。
/// 线程池配置参数
typedef struct tagThreadPoolConfig {
int nMaxThreadsNum; /// 最大线程数量
int nMinThreadsNum; /// 最小线程数量
double dbTaskAddThreadRate; /// 增 最大线程任务比 (任务数量与线程数量,什么比例的时候才加)
double dbTaskSubThreadRate; /// 减 最小线程任务比 (任务数量与线程数量,什么比例的时候才减)
} ThreadPoolConfig;
线程池在没有合理的init之前,是不会开展工作的。
你什么都没有做,就得到了一个扩展性强的任务线程池。
我希望您能够提供在使用过程中,所发现的不足,以issue的方式提交(点亮该项目,已便寻找)
相关文章 : C++11 编写可复用线程池
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。