poll,epoll模型

1.select模型中使用的是bitmap实现文件描述符的记录,poll使用的是链表或者数组来实现的;

2.好处是:

**解决了bitmap只能最大监控1024个连接

使用了数组或者链表,解决了bitmap不能重复使用的问题;**

3.epoll(三个常见的函数)

epoll_create:创建一个epoll,参数是预估需要处理的文件的数量;(使用返回值可以找到需要的红黑树)

epoll——ctl,传入一个文件描述符,返回值为一个int (将文件描述符放入红黑书中监听,以及事件(文件描述符的读,写等事件))

epoll_wait()返回值是需要处理的文件数量;

4.在共享区域中创建一个红黑树,使用ctl将连接注册到红黑树;调用epoll——wait方法监听哪些文件发生了变化,返回变化的数量;

epoll的优点:

5.相比较select模型以及poll模型,前两者遍历文件描述符的时间复杂度为O(n),epoll模型使用了红黑树(并且红黑树可以重新排序,将变化的节点放在前面),依据返回的值,使得遍历节点的复杂度为O(1);

epoll使用了共享内存区,这就意味着不用每次拷贝红黑树到系统内核,提升了效率

全部评论

相关推荐

头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务