美文网首页
网络 I/O 模型的演进

网络 I/O 模型的演进

作者: FlySheep_ly | 来源:发表于2017-03-24 08:40 被阅读14次

    一、同步和异步

    同步和异步描述的是用户线程与内核的交互方式:

    • 同步是指用户线程发起 I/O 请求后需要等待或者轮询内核 I/O 操作完成后才能继续执行;
    • 异步是指用户线程发起 I/O 请求后仍继续执行,当内核 I/O 操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

    二、阻塞和非阻塞

    阻塞和非阻塞描述的是用户线程调用内核 I/O 操作的方式:

    • 阻塞是指 I/O 操作需要彻底完成后才返回到用户空间;
    • 非阻塞是指 I/O 操作被调用后立即返回给用户一个状态值,无须等待 I/O 操作彻底完成。
        一个 I/O 操作其实分成了两个步骤:发起 I/O 请求和实际的 I/O 操作。
        阻塞 I/O 和非阻塞 I/O 的区别在于第一步,发起 I/O 请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞 I/O,如果不阻塞,那么就是非阻塞 I/O。
        同步 I/O 和异步 I/O 的区别就在于第二个步骤是否阻塞,如果实际的 I/O 读写阻塞请求进程,那么就是同步 I/O。

    相关文章

      网友评论

          本文标题:网络 I/O 模型的演进

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