C++ 线程池学习笔记(面试吹牛逼)

一、线程池的概念

        线程开的过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护这多个线程,等待着监督管理制者分配可并发执行任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池能保证内核的充分利用,还能防止过度调用。

       

二、线程池的组成

   1、线程池管理器

        创建一定数量的线程,启动线程,调配任务,管理着线程池
        本篇线程池目前只需要启动(start()),停止方法(stop()),及任务添加方法(addTask).
        start()创建一定数量的线程池,进行线程循环.
        stop()停止所有线程循环,回收所有资源.
        addTask()添加任务.

   2.工作线程

     线程池中线程,在线程池中等待并执行分配的任务.
     本篇选用条件变量实现等待与通知机制.

   3.任务接口

     添加任务的接口,以供工作线程调度任务的执行

   4.任务队列

    用于存放没有处理的任务。提供一种缓冲机制

三、实现线程池的具体步骤:

   1、设置一个生产者消费者队列,作为临界资源

   2.初始化n个线程,并让其运行起来,加锁去任务队列去任务运行

   3.当任务入队列为空的时候,所有线程阻塞

   4.当生产者队列来了一个任务后,先对队列加速,把任务挂载到队列上,然后使用条件变量去通知阻塞中一个线程处理任务,当任务处理完成之后,该线程会被重新放回线程池中,以供其他的任务调用。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值