多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHP

前言

那么这里博主先安利一下一些干货满满的专栏啦!

Linux专栏多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHPhttps://blog.csdn.net/yu_cblog/category_11786077.html?spm=1001.2014.3001.5482操作系统专栏多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHPhttps://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482手撕数据结构多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHPhttps://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014.3001.5482


GitHub地址

去仓库获取代码的小伙伴不要忘记给博主点个小星星哦!

Multiplexing-high-performance-IO-server多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHPhttps://github.com/Yufccode/Multiplexing-high-performance-IO-server

什么是多路转接

网络通信的本质是IO

IO效率问题:网络IO效率很低为什么网络IO效率低?

以读取为例:
当我们read/recv时,如果底层缓冲区中没有数据,那么read/recv会怎么做?->阻塞
当我们read/recv时,如果底层缓冲区中有数据,会发生什么?->copy
所以IO=等待+数据复制
那么,什么是高效IO?什么是低效IO?低效:单位时间,大部分时间IO类接口实际上都在等待!!!
如何提高IO的效率?让等待的比例降低!!!!!

  1. 五种IO模型:
  2. 闭塞类型
  3. 非阻塞轮询
  4. 信号驱动
  5. 多路复用和多路复用
  6. 异步IO

第四种方法是最有效的!

为什么?因为单位时间的等待时间很低。如果一个线程/进程想要参与IO,我们称之为同步IO。IO=等待+复制,所谓的参与实际上意味着要么参与等待,要么参与复制,或者两者同时参与。

多路转接高性能IO服务器的实现

详情见Github上的README文件

Multiplexing-high-performance-IO-server多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHPhttps://github.com/Yufccode/Multiplexing-high-performance-IO-server

多路转接高性能IO服务器|select|poll|epoll|模型详细实现-LMLPHP

 

07-09 06:07