当前位置: 首页> 游戏> 评测 > IO多路复用

IO多路复用

时间:2025/7/10 4:28:55来源:https://blog.csdn.net/m0_62645012/article/details/139419846 浏览次数:1次

       📝个人主页:五敷有你      

 🔥系列专栏:面经

⛺️稳中求进,晒太阳

Redis为什么快呢?

  1. 它是C语言编写,速度快。
  2. 它是基于内存速度快。
  3. 他是单线程,减少了上下文的切换。
  4. 它是非阻塞IO多路复用。
  5. 具有高级数据结构(如 SDS、Hash以及跳表等)

那非阻塞IO是什么

通过该系统调用可以监视多个文件描述符。一旦某个描述符就绪(一般是内核缓冲区可读可写),内核就能将就绪的状态返回给应用程序。随后,应用程序根据就绪状态进行相应IO。

        在IO多路复用模型中通过select/epoll系统调用,单个应用程序的线程,可以不断轮询成百上千的socket连接,当某个或者某些socket网络连接有IO就绪的状态,就返回对应的可以执行的读写操作

O多路复用模型如下图所示:

那select和epoll有什么区别

           select是一个函数,它支持最大的连接数是1024或2048,因为select函数需要传入fd_set参数,fd_set就是一个bitmap,数据没到缓冲区就是0,到了为1。 select函数会不断遍历set中的bit标识位,当有标识位发生变化,就发起中断处理。

           epoll是为了解决select的缺点,它定义了epoll_event结构体来解决,解决了select存在最大连接数的限制,epoll不会遍历所有的文件描述符(fd),epoll会将准备就绪的文件描述符维护在一块指定的空间内,每次从中取出已经准备就绪的文件描述符处理,大大提高性能。

关键字:IO多路复用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: