接Socket网络编程-池化的思路

本文探讨了客户端到服务器之间的线程池工作原理,涉及链接建立、任务分配、线程使用和资源管理,重点讲解了IO多路复用(如select)在任务匹配中的应用,以及如何通过算法或任务队列实现线程的高效复用和资源分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整个客户端到服务器的线程池使用概念模型,大体可以分为四部分,创建链接-  任务分配- 线程处理且归还子线程-进入下一个任务周期。(可以从这几个方面去看,毕竟整体问题是在服务器和客户端之间发生的事件而且服务器大部分都是一直在运行的,线程的销毁还是需要再具体情况具体分析,这次先写前三条的一些内容,其他的还在查看资料学习。)

1、建立链接接收任务(主线程进行)

2、资源分配(线程的资源分配,回收)

3、使用完将线程还回线程池(感觉线程池,说是池化,只是需要其他组件一起实现,核心还是创建多线程,进行任务匹配,处理,然后线程空余出来等待下一波工作的开始)

4、线程使用的过程中也需要注意用户态和内核态数据的复制(文件描述符的复制,数据的读写等)

5、单纯的使用数据的复制(非内核态),如果数据过大或者申请空间频率较高的时候,效率明显不行,而且也浪费很多空间。

6、上下文的切换(简单说就是CPU处理任务的过程中,寄存器状态的切换)

在使用线程池的时候,一开始考虑到两个问题(任务的产生和处理:当时因为在写服务器,也有考虑线程分配的问题,不管我们用的是select去监听不同的链接,还是epoll,甚至自己写任务队列去管理线程和任务分配,都不能理解客户任务请求,是怎么和线程匹配上的,或者有人考虑过随机的去匹配,但是当别的线程被占用的时候,我又怎么去找到空闲的线程去和任务匹配呢?)

目前先看下select的内容,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值