相比异步IO复用机制的实现,epoll分三个部分:
create:完成内核态的初始化。所有连接的fd都会被构建到rdr的这个红黑树里面。
当数据包来了以后,维护rdlist(保存所有就绪的fd),这样可以避免每次都传输整个fd set。用户态只需要查询这个rdlist(ready)即可。
这样减少了用户态和内核态交互的数据量