/threadpool

keywords:模仿muduo的线程池**,使用c++11新特性

Primary LanguageC++

ThreadPool

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、start(unsigned int num = 1)

  • 它负责什么工作: 创建指定数量的线程,默认参数为1

2、run()

  • 这是个什么 不定参数函数模板
  • 它负责什么 提交任务(业务函数)给线程池运行:用lambda表达式封装后提交任务队列
  • 它的参数是什么 可调用对象指针,和它的参数
  • 返回类型是什么 future<?>
  • 特殊情况 如果线程池大小为0,则自己运行,也就是当前线程自己运行
  • 阻塞 任务队列已满的时候,阻塞在notFull_

3、runInLoop()

  • 这是什么 这是每个线程自己跑的函数
  • 它负责什么 从任务队列取出任务并执行,捕获错误

4、stop()

  • 这是什么 通知所有线程停止运行