https://github.com/zongzw-learn/learn-ccpp/tree/main/epoll-test
Epoll工作于socket和用户逻辑之间,就像多socket的调度管理工具。
epoll运行在内核空间。
通过以上repo我们可以知道如何使用epoll的三个关键API
另外还需要知道epoll的核心数据结构:双向链表和红黑树。
知道epoll的水平触发和边缘触发的区别。
- redis中用的是水平触发:事件在读取完成前会反复存在于epoll事件队列中。
- nginx中使用的是边缘触发,仅仅在事件发生变化时再次被放置在epoll队列中。