美文网首页
网络IO模型

网络IO模型

作者: 飞哈飞 | 来源:发表于2020-11-01 01:00 被阅读0次

    什么是同步?
    A调用B,B完成了所有的操作才返回。
    什么是阻塞?
    网络IO读写时,没有数据则会阻塞当前线程,使当前线程为挂起状态。

    同步阻塞IO:
    用户程序调用系统read,如果没有数据则会阻塞当前线程,等待有数据之后才会唤醒线程。
    内核完成数据复制操作才会返回;
    socket为阻塞类型。

    同步非阻塞IO:
    用户程序调用系统read,如果没有数据则会立即返回失败,不会阻塞当前线程。
    线程不停轮询调用,直到有数据的时候内核完成数据复制操作才会返回
    socket为非阻塞类型。

    IO多路复用:
    线程同时轮询监控多个IO文件,返回可以读取数据的socket,用户线程再读取数据。
    基础是Linux的select/epoll查询。
    与同步非阻塞IO相比区别在于单线程可以同时监控多个socket,而同步非阻塞IO只能作用于一个。
    JAVA的NIO就是这种类型。

    异步IO:
    用户线程调用时,向操作系统注册自己的回调函数。
    内核完成了数据准备就通知用户线程,或者调用用户线程注册的回调函数。
    Linux目前尚不完善

    相关文章

      网友评论

          本文标题:网络IO模型

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