IO模型介绍

IO模型介绍

  • 我们研究的 IO 都是基于网络 IO 的
  • Stevens在文章中一共比较了五种IO Model:
    • blocking IO
    • nonblocking IO
    • IO multiplexing
    • signal driven IO ---(忽略)
    • asynchronous IO 由signal driven IO(信号驱动IO)在实际中并不常用,所以主要介绍其余四种IO Model。
  • 当一个read操作发生时,该操作会经历两个阶段:
    • 1、等待数据准备 (Waiting for the data to be ready)
    • 2、将数据从内核拷贝到进程中(Copying the data from the kernel to the process)
  • 同步
    • 在同步模式下,一个组件必须等待另一个组件完成某个操作,然后再进行下一个操作。
  • 异步
    • 在异步模式下,组件之间互不干扰,它们可以独立地执行任务。当一个组件完成任务后,它可以直接通知另一个组件继续执行操作。
  • 阻塞
    • 在阻塞模式下,一个进程或线程在执行某个操作时,如果该操作没有完成,它将立即停止一切操作,并等待操作完成后再继续进行后续操作。
  • 非阻塞
    • 在非阻塞模式下,一个进程或线程在执行某个操作时,即使该操作没有完成,也会立即返回执行下一个操作,不会出现停滞等待的情况。 如果下一个操作需要依赖于上一个还未完成的操作,它将定期检查上一个操作是否完成,保证这些未完成的操作不会影响后续任务的执行。
  • 常见的网络IO
    • accept
    • recv
    • recvfrom

一、阻塞IO模型

我们之前写的都是阻塞 IO 模型 (协程除外)

[1]TCP/UDP协议模型

二、非阻塞IO模型

三、IO多路复用

四、异步IO

五、总结

posted @ 2024-04-09 20:38  桃源氏  阅读(15)  评论(0)    收藏  举报