linux线程池

我们在写服务器的时候,通常需要处理多个客户端的频繁请求,这就需要频繁的创建线程和销毁线程,对CPU的消耗比较大,而线程池就是对这种情况的优化。

线程池的思路:
程序启动之前,初始化线程池,启动线程池中的线程,由于还没有任务到来,线程池中的所有线程都处在阻塞状态,当一有任务到达就从线程池中取出一个空闲线程处理,如果所有的线程都处于工作状态,就添加到队列,进行排队。如果队列中的任务个数大于队列的所能容纳的最大数量,那就不能添加任务到队列中,只能等待队列不满才能添加任务到队列中。

何时不使用线程池线程

● 如果需要使一个任务具有特定优先级

● 如果具有可能会长时间运行(并因此阻塞其他任务)的任务

● 如果需要将线程放置到单线程单元中(线程池中的线程均处于多线程单元中)

● 如果需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它

一般使用线程池的程序的特点

● 需要花费大量的时候,并且请求的时间比较短。

● 对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。

● 接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用

因为这里涉及到多个线程同时访问一个队列的问题,所以我们需要互斥锁来保护队列,同时还需要条件变量来处理主线程通知任务到达、工作线程抢夺任务的问题。
 1、线程池结构,它负责管理多个线程并提供任务队列的接口

 2、任务队列,存放待处理的任务
 这里写图片描述

大体框架如下:
这里写图片描述
这里写图片描述

源码下载请戳链接
线程池的实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值