多路转接高性能IO服务器|select|poll|epoll|模型详细实现
前言
那么这里博主先安利一下一些干货满满的专栏啦!
Linux专栏https://blog.csdn.net/yu_cblog/category_11786077.html?spm=1001.2014.3001.5482操作系统专栏https://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014.3001.5482
GitHub地址
去仓库获取代码的小伙伴不要忘记给博主点个小星星哦!
Multiplexing-high-performance-IO-serverhttps://github.com/Yufccode/Multiplexing-high-performance-IO-server
什么是多路转接
网络通信的本质是IO
IO效率问题:网络IO效率很低为什么网络IO效率低?
以读取为例:
当我们read/recv时,如果底层缓冲区中没有数据,那么read/recv会怎么做?->阻塞
当我们read/recv时,如果底层缓冲区中有数据,会发生什么?->copy
所以IO=等待+数据复制
那么,什么是高效IO?什么是低效IO?低效:单位时间,大部分时间IO类接口实际上都在等待!!!
如何提高IO的效率?让等待的比例降低!!!!!
- 五种IO模型:
- 闭塞类型
- 非阻塞轮询
- 信号驱动
- 多路复用和多路复用
- 异步IO
第四种方法是最有效的!
为什么?因为单位时间的等待时间很低。如果一个线程/进程想要参与IO,我们称之为同步IO。IO=等待+复制,所谓的参与实际上意味着要么参与等待,要么参与复制,或者两者同时参与。
多路转接高性能IO服务器的实现
详情见Github上的README文件