美文网首页
select, poll, epoll

select, poll, epoll

作者: 再凌 | 来源:发表于2020-10-16 17:17 被阅读0次

    背景 : socket在没有得到IO结果的时候会在系统态阻塞自己, 一个进程监听多个socket, 减少进程切换开销

    几种方法:

    • 同步方法
    • 异步方法

    异步方法等系统准备好并拷贝到用户态之后发信号过来读
    同步方法分成阻塞和非阻塞.
    非阻塞就是在没有准备好时return -1, 因此需要程序反复查询
    阻塞就是直接阻塞, 等待准备好.

    同步方法都是在系统准备好就调用, 需要手动拷贝到用户态, 这个时候时阻塞的.

    select poll 和epoll都是同步方法, 让程序阻塞在用户态, 自己在系统态.
    select和poll是反复查询所有的socket IO接口, 如果有IO好了就叫哪个. select上限1024个, poll使用链表记录, 无上限.

    epoll在注册的时候需要注册回调函数, 当SOCKET IO 准备好的时候会被被动触发, epoll就能知道是谁好了, 直接交给对方.

    select是POSIX, epoll是Linux专享

    这里有我的简单的编程实现

    相关文章

      网友评论

          本文标题:select, poll, epoll

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