在早期的文章《unix IO模型》中我们介绍了5种IO模型,如下图是几种IO模型的对比
从上面的图可以看出,从左到右,越往后,阻塞越少,理论上效率也就越优。
其中Select
对应的是第三种IO模型:I/O Multiplexing IO多路复用模型
,而epoll
与kqueue
其实和Select
一样也属于I/O Multiplexing IO多路复用模型
,只是相比于select来说多了一些高级特性而已,可以看做拥有了第四种模型的某些特性,比如callback的回调机制。
IO多路复用的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select,poll,epoll,kqueue这些个