基于C++11标准实现的线程池
2020-03-06 18:57
645 查看
基于C++11实现的线程池
类接口函数
threadpool(int max_thread_num, float init_wakeup_ration)
构造函数,第一个参数是最大线程数量,第二个参数是一个比例,决定类初始化时创建的线程数量。
没有做范围判定,请保证:
0 < max_thread_num
0 <= init_wakeup_ration <= 1
int get_max_thread_num()
获得当前设定的最大线程数量。
int get_task_num()
获得现在还未被执行的任务数量。
int get_idle_thread_num()
获得现在空闲(阻塞状态)的线程数量。
int get_current_thread_num()
获得现在已创建的线程数量。
void change_max_thread_num(const int new_num)
重新设定最大线程数量,请保证:
0 < new_num
template<class F, class… Args>
bool commit_task(F&& func, Args&&… agrs)
提交任务,第一个参数为函数,其余参数为函数执行所需参数。
成功返回true,失败返回false。
void stop_threadpool()
线程池停止工作(剩余的任务不在会被执行,正在被执行的任务继续执行)。
void finish()
线程池停止工作并阻塞等待正在被执行的任务执行完毕。
void print_err()
打印最近一次的失败信息。
目前并没有什么用处。
线程停留时间
被创建的线程最多阻塞60秒,60秒内没有需要执行的任务的话,该线程会被销毁。
Github 链接
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 基于C++11实现线程池的工作原理
- 基于c++11的100行实现简单线程池
- 基于C++11 thread 实现线程池
- 基于C++11实现的线程池
- 基于C++11的线程池
- 基于标准C++实现的信号量类Semaphore
- c++11实现线程池
- 用html 5来实现更丰富、基于标准的Web
- CAFFE2中C++11实现的线程池
- 基于半同步/半反应堆线程池实现的HTTP解析服务端程序
- 自己封装的数据源(支持多种数据库访问,内部实现线程池 基于bonecp)
- C++11简易线程池实现
- c++11实现一个半同步半异步线程池
- 【c++11 新特性应用】利用bind实现通用的混合任务线程池
- C++11:借助C++11特性简单高效实现线程池
- 基于无锁队列和c++11的高性能线程池
- C++11线程池实现
- 一个基于C++11的定时器队列(timerfd,poll实现)
- C++11线程池的实现
- 基于C++11的线程池