网路服务器——线程池技术

2024-01-28 16:28
文章标签 线程 技术 服务器 网路

本文主要是介绍网路服务器——线程池技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、线程池技术
  • 二、使用原理
  • 三、优点
  • 总结


一、线程池技术

  1. 预创建原则,线程池内部准备线程备用, 不宜过多。
  2. 线程应该重用性,可以一对多处理任务或服务不同的客户端。
  3. 处理单元(线程)数量并不固定,动态扩容与缩减(任务量)。
  4. 设计灵活的任务传递方式与任务接口,线程可以执行不同种类的任务,不能将线程工作固定。

二、使用原理

线程与线程之间有一个任务传递方式:生产者——消费者。
监听线程就是生产者,处理线程就是消费者。通过条件变量+互斥锁实现。
生产者与消费者之间有一个任务队列(怎么实现都可以,我用的是环形队列)。
条件变量需要创建工作条件:生产者把任务放到队列中来,消费者拿走处理。
生产者工作条件:任务队列非满。满则挂起。添加完毕,唤醒消费者。
消费者条件相反:任务队列非空获取任务执行,为空则挂起。执行任务完毕,唤醒生产者继续生产。
任务队列是共享资源,多线程访问需要互斥。(任务队列里是函数指针队列)
线程池技术为多线程技术

主线程(生产者)负责epoll,负责工作:

  1. epoll监听树创建。
  2. 设置第一次监听
  3. 阻塞多轮监听

如何处理协议:通过协议映射表(函数指针列表),通过不同的协议编号,执行不同的函数。
生产者访问树更多是读访问,知道所有文件描述符轮询监听。
消费者也要访问树,要去执行链接,将sock放到树上。链接断开,将sock从树上移除。
还要找个管理者负责扩容和缩减,负责管理消费者。管理线程状态,完成扩容和缩减任务。

三、优点

  1. 提高资源利用率:线程池可以重复利用已经创建了的线程
  2. 提高响应速度:因为当线程池中的线程没有超过线程池的最大上限时,有的线程处于等待分配任务状态,当任务到来时,无需创建线程就能被执行。
  3. 具有可管理性:线程池会根据当前系统特点对池内的线程进行优化处理,减少创建和销毁线程带来的系统开销。

总结

一共仨身份:一个生产者线程、一个管理者和n个消费者线程,有一个监听队列,有一个监听树。要做一个线程的消息映射表,不同sock就绪,执行不同的任务。读取不同客户端请求还要对协议进行再一次解析。

这篇关于网路服务器——线程池技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654159

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业