美文网首页
IO多路复用模型

IO多路复用模型

作者: 飞跑的蛤蟆 | 来源:发表于2020-05-16 00:39 被阅读0次

    select模型

    • 跨平台支持好
    • 监视的文件描述符有限(内核限制,1024,fd_set位集合)
    • 使用轮询方式判断fd是否就绪
    • 消息传递方式:内核需要将消息传递给用户空间,需要内核进行拷贝工作
    • 如果fd_set比较大时,会使得用户空间和内核空间在传递该结构时复制开销较大

    poll模型

    • 没有最大连接数的限制(poll fd数组)

    • 消息传递方式:与select没有本质的区别,它是将用户传入的数组拷贝到内核空间

    • 也是使用轮询方式判断fd是否就绪

    • 水平触发,如果报告的fd没有被处理,那么下次poll还会再次报告

    epoll模型

    • 没有描述符限制

    • 事件驱动模型,为每个fd注册一个监听事件,fd变更为就绪时,将fd添加到就绪链表

    • 消息传递方式:epoll通过内核和用户空间共享一块内存来实现的,利用mmap()文件映射内存加速与内核空间的消息传递,内存拷贝

    • epoll支持水平触发和边缘触发,边缘触发只告诉进程哪些fd刚刚变为就绪状态,并且只会通知一次。

    • 由于使用事件就绪通知方式,不会随着fd数目的增加导致效率下降(只有活跃可用的fd才会调用)

    相关文章

      网友评论

          本文标题:IO多路复用模型

          本文链接:https://www.haomeiwen.com/subject/xtvkohtx.html