目录
- 1.大量的fd 集合。选择什么数据结构?
- 2、Epoll 数据结构
- Epitem 的定义
- Eventpoll 的定义
1.大量的fd 集合。选择什么数据结构?
查找频率很高的数据结构
1.红黑树
2.哈希(扩容缩容)
3. b/b+tree (降低树的高度,磁盘)
2、Epoll 数据结构
Epoll 主要由两个结构体:eventpoll 与 epitem。Epitem 是每一个 IO 所对应的的事件。比如
epoll_ctl EPOLL_CTL_ADD 操作的时候,就需要创建一个 epitem。Eventpoll 是每一个 epoll 所
对应的的。比如 epoll_create 就是创建一个 eventpoll。
Epitem 的定义
rdlink就绪队列,
sockfd,event红黑树的kv
Eventpoll 的定义
epoll_create会生成eventpoll,rbr指向红黑树,rdlist指向就绪队列,还有控制线程安全的功能
epoll_clt来添加删除修改红黑树的节点
epol如何做线程安全?
1.红黑树–> mutex
2.就绪队列–> spinlock
epoll_wait会把就绪队列里拷贝到数据events[]