![969b95c82809ddc1e3edc933c3104acb.png](https://i-blog.csdnimg.cn/blog_migrate/518ee9c1a55af3d9b1f7bcbd3e0e6743.png)
1.epoll为什么可以这么快?为什么epoll没有大小限制?
epoll不需要遍历数组查询谁有事件!epoll维护的是一棵树(红黑树),只是一个文件!
2.不遍历如何知道谁可读不可读?
epoll的执行:
1. int epoll_create(int size);
2. int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
3. int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);
1)调用epoll_create()建立一个epoll对象(在epoll文件系统中为这个句柄对象分配资源)
2)调用epoll_ctl向epoll对象中添加这100万个连接的套接字
3)调用epoll_wait收集发生的事件的连接
3.epol_wait如何收集发生事件的?
当调用epoll_wait检查是否有事件发生时,只需要检查eventpoll对象中的rdlist双链表中是否有epitem元素即可。如果rdlist不为空&