基于linux系统简单的线程池C++实现

本文主要参考博客用C++实现的一个比较简单的线程池。
一、为什么使用线程池。
线程的创建和销毁都需要耗费系统资源的。假设某个线程创建、运行、销毁的时间分别是 t 1 , t 2 , t 3 t_1,t_2,t_3 t1,t2,t3,若 t 1 + t 3 t1+t3 t1+t3的时间相对于 t 2 t_2 t2来说是不可忽略的,线程池的引入是十分有必要的。特别是处理百万级别的高并发时。线程池提升了多线程程序的性能,因为线程池里的线程都是现成的而且能够重复使用的,不需要大量的创建和销毁线程。
二、线程池原理
线程池中主要有两个操作:
1.主程序不定时地向线程池添加添加任务
2.线程池里的线程任务领取任务去执行
从上面可以看出是一个典型的生产者-消费者同步问题。所以我们需要一个队列,主程序(生产者)往队列里加任务,线程(消费者)执行任务,这个过程需要保证同一时刻只有一个线程能取出任务。因此,我们需要互斥锁来保护队列,同时还需要条件变量来处理主线程通知任务到达、工作线程抢夺任务的问题。
一般来说实现一个线程池主要包括以下4个部分:
1.线程管理器:用于创建并管理线程池
2.工作线程:线程池中实际执行任务的线程
3.任务接口:每个任务必须实现的接口
4.任务队列:用来存放没有处理的任务。
代码见github地址:线程池

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值