【网络IO】(二)多路复用器——内核级介绍
前言
在这个系列的上一篇文章中,我们介绍过网络IO中的两种IO模型——BIO与NIO,但这两种模型各有缺陷。
BIO将系统资源浪费在了线程调度上,而NIO将系统资源浪费在了用户态与内核态的切换上。
为了解决上面这两种IO模型的缺点,又提出了多路复用器的概念。
多路复用器,根据工作模式的不同,分为select/poll和epoll。
多路复用器的原理
要聊多路复用器,首先要明白“路”是指什么。
我们先来看一张图:

这张图左边是NIO的工作模式,右边是多路复用器的工作模式。
而其中的“路”就是IO通道,是这个用户程序需要监听的所有socket。
无论是NIO还是多路复用器,都需要知道在监听的所有socket中,有状态更新的是哪些,从而对这些socket进行处理。
而NIO与多路复用器的区别在于如何知道那些有状态更新的sockets。
与NIO的对比
在上一篇文章中我们知道,用户程序是通过fd
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
