IO、NIO、多路复用select\poll\epoll底层原理

   最近偶尔会看到linux下IO多路复用的知识,就深入理解了一下,下面的文章讲的很清楚了,不再重复总结。

原文链接:https://segmentfault.com/a/1190000003063859

   这里额外说明下epoll的底层数据结构:

epoll_create方法会创建eventpoll结构体:

struct eventpoll{
    ....
    /*红黑树根节点,存储所有通过epoll_ctl添加到epoll中的事件*/
    struct rb_root  rbr;
    /*双链表中存放满足条件的事件,用户使用epoll_wait获取对应事件*/
    struct list_head rdlist;
    ....
};

红黑树可以高效识别出重复添加的事件,也就是说,使用epoll_ctl若重复添加同一个事件,这是会去重的,当事件就绪时,就绪链表中只会有一个就绪事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值