epoll相比select、poll有很大的优势
1.epoll在内核里维护了一颗红黑树,减少了在用户态和内核态之间数据的拷贝。
2.epoll在epoll_wait()函数中,struct epoll_event *events参数只带出就绪事件。不用扫描所有的事件进行处理。
红黑树的建立过程:
首先在epoll_create()会创建一个file事例,通过private_data创建eventpoll实例,当增删改时,会对rbr进行操作,rdllist存储的是就绪的事件
红黑树在比较的时候,会按照文件地址进行比较,如果地址相同则比较文件描述符,因为相同地址的文件会有不同的文件描述符。