keywords:模仿muduo的线程池**,使用c++11新特性,实现参考:git@github.com:lzpong/threadpool.git
思路模仿muduo的线程池,提供限制大小的线程序列和任务序列。使用C++11的新特性:支持不定参数,基于C++11的线程接口实现。
这个模块主要是练习C++11线程相关的内容,我自己也没想好要去怎么使用我写的这个线程池。有机会拿这个写个压力测试模块。
基本思路参考muduo::base::ThreadPool:存在一个线程池threadPool_
,类型为vector<thread>
;存在一个事先指定大小的任务队列tasks_
,类型为queue<fucntion<void>>
。加入条件变量notFull_
进行判满,加入条件变量notEmpty_
进行判空,它们的类型为condition_variable
。选择性加入出错捕获功能。
- 它负责什么工作: 创建指定数量的线程,默认参数为1
- 这是个什么 不定参数函数模板
- 它负责什么 提交任务(业务函数)给线程池运行:用lambda表达式封装后提交任务队列
- 它的参数是什么 可调用对象指针,和它的参数
- 返回类型是什么
future<?>
- 特殊情况 如果线程池大小为0,则自己运行,也就是当前线程自己运行
- 阻塞
任务队列已满的时候,阻塞在
notFull_
上
- 这是什么 这是每个线程自己跑的函数
- 它负责什么 从任务队列取出任务并执行,捕获错误。
- 这是什么 通知所有线程停止运行