Pure Soul

Linux
Linux

I/O多路复用之epoll

epoll 如果说epoll和select/poll在什么地方具有相同点,那么他们的共同点在于epoll也是需要将监听的文件描述符纳入自己的"监管"。但是select和poll存在自己的一些“天生”的缺点,比如都需要不断地在用户空间和内核空间进行反复的拷贝传递,以及它们在轮询查找可读可写事件的时间复杂度都是线性时间复杂度(表现在select/poll返回值包括了就绪的事件和未就绪的事件,而之后是需要我们自己去判断哪一个文件描述符是就绪了的)。但是,一旦并发量上来了(到达10W和100W级别),如果还是线性的轮询时间…

2021年11月1日 0条评论 834点热度 0人点赞 ycq 阅读全文
Linux

I/O多路复用之poll

poll select, poll, epoll是IO多路复用当中的重要的三种实现方式,poll和epoll相对于select而言,只能在Linux下使用,但是select是跨平台的。同时poll相对于select而言,没有最大监听数量的限制。但是也是监管一系列的文件描述符,阻塞的去轮询看这些文件描述符是否可读/可写/异常,再去调用io函数读写。 但是select和poll都存在一个很大的“缺点”,当存在大量的连接且其中绝大部分的连接都是活跃的时候,那么poll/select的效率实际上是很低下的,这也是由于二者的…

2021年10月30日 0条评论 939点热度 0人点赞 ycq 阅读全文
Linux

I/O多路复用之select

题外话:服务器单机理论最大能连接多少个客户端? 答案是:对于IPV4而言,粗略估计有2^48个连接。计算机标识一个唯一的socket连接依赖的是唯一四元组-(源ip,源端口,本机ip,本机端口),其中本机的ip和socket初始化的端口是不能变的,因此源ip和源端口都是可变的。那么本机的一个进程,理论上可以连接2^32*2^16=2^48个连接,32表示IPV4的地址数,2^16表示本机端口号的数目(65535)。 当然,理论值只是理论值。限制连接数的不只是ip和端口两个因素,还和内核的各种限制也有关系,每一个so…

2021年10月28日 0条评论 822点热度 0人点赞 ycq 阅读全文

COPYRIGHT © 2021 oo2ee.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS