epoll实现原理浅析

1. 介绍

epoll几本上可以理解为异步非阻塞的代名词了,本身也是比较重要的概念。这里我们对其核心的原理做些简单分析理解。

2. poll,select和epoll

epoll也称为reactor、事件驱动、事件轮询。在epoll之前的是poll和select。

2.1 poll/select缺点

每次调用时要重复地从用户态读入参数。

每次调用时要重复地扫描文件描述符。

每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结束后,又把进程从各个等待队列中删除。

2.2 epoll如何克服poll/select缺点

在实际应用中,select/......

epoll解析

1.epoll介绍

epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwa......