如何透彻理解Linux的epoll模型 (可有好的英文资料)?

实际现象

  • 看了很多中文博客, 但是没有收获, 感觉都在挠痒痒

  • 搜索了英文资料, 没有搜索到很好的( 也是挠痒痒 )

  • 感觉最好的维基百科的资料, 但是仍然无法助我透彻理解

预期现象

  • 能彻底搞懂epoll模型

  • 从原理, 从全局去弄懂epoll

上下文环境

  • 产品版本:

  • 操作系统: Linux

  • epoll + select

阅读 5k
2 个回答

楼主的问题其实很难简单说明白,我先说下我的观点,可能太基础,权当抛砖引玉:

要深入理解eoll,我觉得是建立在这样的基础之上的:

1:理解IO多路复用机制。我曾经尝试着回答过这个问题 I/O多路复用的应用场合疑问? 就像答案中说到,这只是一种高效处理socket连接的策略。

2:为什么要使用IO多路复用机制?也就是传统多进程/多线程模型的缺点是什么?怎么理解IO多路复用(select)?

3:这样的话其实EPOLL也只是帮我们解决了管理多个socket的问题,那用epoll管理有哪些特点呢?

  1):回调机制
  2):内核中红黑树组织数据结构,方便增删
  3):mmap提高效率

那对于这些特点,就分开再去看了,把握了整体的原理,局部的细节如果到了看源码的地步也可以去看源码。

推荐问题