epoll模型与select模型的区别(宿管大妈的例子)

2021年09月15日 阅读数:1
这篇文章主要向大家介绍epoll模型与select模型的区别(宿管大妈的例子),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Nginx  --->epoll模型网络

Apache --->select模型并发

处理大量链接的读写时,Apache所采用的select网络I/O模型比较低,用两个通俗的比喻来解释两者的区别:ide


  • 第一个比喻:性能

    例如你在大学读书,住的宿舍楼有不少房间,你的朋友要来找你,select版宿管大妈就会spa

带着你的朋友到各个房间挨个去找,直到找到为止。而epoll版宿管大妈会先记下每位入住同窗的房间号码,当你朋友来找你时,只需告诉你的朋友你住在哪一个房间?不用亲自带着你的朋友满宿舍的找。若是同时来了100我的,都要找本身住这栋楼的同窗,select版宿管大妈和epoll版宿管大妈说的效率高,就很明显了。orm

  • 第二个比喻:事件

    select调用复杂度是线性的,即O(n)。举个例子,一个保姆照看一群孩子,若是把孩子是否须要尿尿比做网络I/O事件,select的做用就比如这个保姆挨个询问每一个孩子“你要尿尿吗?”,若是孩子的回答是,保姆则把孩子领出来放到另一个地方。当全部孩子询问完以后,保姆领着这些须要尿尿的孩子去上厕所(处理网络I/O事件)。而epoll机制下,保姆再也不须要挨个询问每一个孩子,取而代之的是,约定好的地方是否有孩子。若是有,则领着孩子去上(处理网络I/O事件),所以,这种机制可以高效的处理成千上万的并发链接,并且性能不会随着链接数增长而降低太多。it