加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_汕头站长网 (https://www.0754zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux线程 池

发布时间:2022-11-21 12:57:56 所属栏目:Linux 来源:
导读:  我们在写服务器的时候,通常需要处理多个客户端的频繁请求,这就需要频繁的创建线程和销毁线程,对CPU的消耗比较大,而线程池就是对这种情况的优化。

  线程池的思路:

  程序启动之前,初始化线程池
  我们在写服务器的时候,通常需要处理多个客户端的频繁请求,这就需要频繁的创建线程和销毁线程,对CPU的消耗比较大,而线程池就是对这种情况的优化。
 
  线程池的思路:
 
  程序启动之前,初始化线程池,启动线程池中的线程,由于还没有任务到来,线程池中的所有线程都处在阻塞状态,当一有任务到达就从线程池中取出一个空闲线程处理,如果所有的线程都处于工作状态,就添加到队列,进行排队。如果队列中的任务个数大于队列的所能容纳的最大数量,那就不能添加任务到队列中线程池linux,只能等待队列不满才能添加任务到队列中。
 
  何时不使用线程池线程
 
  ● 如果需要使一个任务具有特定优先级
  ● 如果具有可能会长时间运行(并因此阻塞其他任务)的任务
  ● 如果需要将线程放置到单线程单元中(线程池中的线程均处于多线程单元中)
 
  ● 如果需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它
  一般使用线程池的程序的特点
 
  ● 需要花费大量的时候,并且请求的时间比较短。
  ● 对性能要求苛刻的应用,比如要求服务器迅速响应客户请求。
  ● 接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用
 
  因为这里涉及到多个线程同时访问一个队列的问题,所以我们需要互斥锁来保护队列,同时还需要条件变量来处理主线程通知任务到达、工作线程抢夺任务的问题。
 
  1、线程池结构,它负责管理多个线程并提供任务队列的接口
 
  2、任务队列,存放待处理的任务
 

(编辑:云计算网_汕头站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!