为什么epoll使用红黑树来管理文件描述符而不是哈希表?

为什么epoll使用红黑树来管理文件描述符而不是哈希表?

Linux系统调用epoll_ctl(at fs/eventpoll.c) 使用称为兴趣列表的红黑树来创建、删除或修改文件描述符事件的兴趣。兴趣清单没有被搜索到epoll_wait,这更确切地说等待来自的回调poll(在include/linux/poll.h)。因此,epoll就连接数而言,接收感兴趣的文件描述符事件的执行时间为 O(1)n。然而,由于使用了红黑树,向兴趣列表添加、修改或删除文件描述符的时间复杂度为 O(log(n))。

当哈希表可以为添加和删除连接以及使用连接提供 O(1) 性能时,为什么要使用红黑树来实现兴趣列表呢?有哪些权衡?

相关内容