![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
池式结构
文章平均质量分 78
分析服务器中的线池结构
amanda39
这个作者很懒,什么都没留下…
展开
-
池式结构(4) 请求池
本文主要讲异步请求池的实现和原理。 什么是异步?和阻塞、非阻塞有什么区别? 同步: 一请求就等返回结果,没有等到就一直等 异步: 只管发送请求,进程不需要一直等下去, 而是继续执行下面的操作 阻塞和非阻塞是针对fd的状态,有数据就返回,没有数据就挂起,这是阻塞状态;非阻塞就压根不管,直接返回。 阻塞【挂起】和非阻塞是线程的一种状态,同步和异步是指的是线程执行方法的一种方式,当然同步执行时,一般都伴随着线程的阻塞。 背景: 客户端与mysql服务器连接后,发送完一个请求没有等到返回结果,要是再要发送请求,只能原创 2021-11-18 22:28:42 · 654 阅读 · 0 评论 -
池式结构(3)
本文主要讲内存池的原理和实现 池式结构的作用: 主要起到缓冲作用。也就是需要使用资源时,在已有的资源结构中去拿,避免重新创建资源。 背景: 在网络数据中,建立io连接后,recv收到数据后,会讲数据放置在buffer中。若数据周期较长,或者将处理数据进行解耦,放置在另一个线程中处理,这样buffer就是不可用的。我们通常会malloc一个内存,将数据拷贝进去,再在新线程中 处理数据。 问题: 当大量io事件发生时,会出现: 1、不利于内存管理; 2、内存碎片; 什么是内存池? 拿取内存时,从内存池中拿取内存原创 2021-11-17 19:30:20 · 149 阅读 · 0 评论 -
池式结构(2)
本文主要将线程池的原理和实现 线程池的应用场景 主要是要开线程的都可使用。 1、写日志 2、对服务器业务计算,开线程的时候都可用线程池 3、增删改查crud 线程池的定义: 就是线程的集合,这些线程是任务的执行队列,任务从任务队列中获取。 组成: 1、任务队列 2、执行队列 3、管理组件(让任务队列和执行队列有秩序的工作) 管理组件如何实现? 1、加锁 2、条件变量 在网络数据的处理过程中: 1、检测IO世家是否就绪(epoll) 2、对IO进行读写操作(recv/send) 3、对数据进行解析与操作(pa原创 2021-11-17 14:13:18 · 80 阅读 · 0 评论 -
池式结构(1)
池化技术: 定义: 能够减少创建资源的次数,在高并发下能够提升效应效率 的技术。 使用池化技术的背景: 对象创建时间⻓; 对象创建需要⼤量资源; 对象创建后可被重复使⽤ 本文主要讲数据库连接池 背景: 单个连接有什么问题,流程是怎样的? 目的是:连接到数据库服务器,执行sql语句。 流程: 1、tcp连接; 2、mysql认证(账号和秘密给服务器); 3、执行sql语句; 4、MySQL关闭; 5、tcp四次挥手; 本质为了执行一条sql语句,但流程太长;若是有大量的sql语句要执行,则会耗费大量资源原创 2021-11-16 19:00:22 · 1503 阅读 · 0 评论