1.epoll底层数据结构:双向链表和红黑树
每个epollfd在内核中有一个对应的eventpoll结构对象.其中关键的成员是一个就绪队列readylist(eventpoll:rdllist),和一棵红黑树(eventpoll:rbr).就绪列表应是一种能够快速插入和删除的数据结构。双向链表就是这样一种数据结构,epoll使用双向链表来实现就绪队列。
就绪列表用来存储已经发生注册事件的文件描述符的集合,红黑树存储所监控的文件描述符的节点数据,为监听的所有文件描述符提供一个快速增删查的索引。
2.epoll的底层实现过程
首先看这三个函数:
1 int epoll_create(int size);
2 int epoll_ctl(int epfd,