14-muduo-base-ThreadPool

1 类说明

  • 功能
    • 线程池
  • 继承
    • 继承noncopyable

2 成员变量

  • mutex_
    • 锁,互斥使用队列
  • notEmpty_
    • 条件变量,含义如名
  • notFull_
    • 条件变量,含义如名
  • name_
    • 线程池名称
  • threadInitCallback_
    • 线程池中所有线程的线程函数,Task类型,也即是function<void ()>
  • threads_
    • 存放Thread指针的数组(vector)
  • queue_
    • 任务队列,deque
  • maxQueueSize_
    • 任务队列的最大容量
  • running_
    • 线程运行标志

3 成员函数

  • 构造函数
    • 初始化成员变量
  • 析构函数
    • 若running,则调用stop函数
  • setMaxQueueSize
    • 设置任务队列最大容量
  • setThreadInitCallback
    • 设置回调函数
  • start
    • 线程池运行函数
    • 如果线程数为0,调用threadInitCallback_
    • 开始初始化threads_数组:new Thread,指定线程函数为ThreadPool::runInThread
    • 调用每个Thread的start函数,使线程跑起来
  • stop
    • 两个条件变量notifyAll
    • 对所有线程join
  • name
    • 返回线程池名字
  • queueSize
    • 返回任务队列中已有任务个数
  • run
    • 当线程池为空,直接消费当前传入的task
    • 否则,还是要放到任务队列去
  • isFull
    • 返回任务队列是否已满
  • runInThread
    • 这个函数是线程池中所有线程的线程函数:
      • 若threadInitCallback_存在,先调用这个函数
      • 一直从队列中取任务来消费,当然有一些异常捕获
  • take
    • 从队列取出task
posted @ 2023-05-04 15:07  DavidJIAN  阅读(6)  评论(0)    收藏  举报