Linux 的五种 IO模型-结合买奶茶例子

Linux 的五种 IO模型

1. 阻塞 I/O(Blocking I/O)

  • 解释:程序发起 I/O 操作后,会一直等待操作完成,直到数据准备好才能继续执行其他任务。
  • 举例:你去奶茶店买奶茶,点单后直接站在柜台前等,直到奶茶做好、拿到手,才能离开。

2. 非阻塞 I/O(Non-blocking I/O)

  • 解释:程序发起 I/O 操作后,立即返回,哪怕数据还没准备好。程序需要不断轮询检查数据是否准备好了。
  • 举例:你去奶茶店点单后,发现奶茶还没好,就先去逛一会儿,然后再回来问好了没。你多次重复这个过程,直到奶茶做好。

3. 多路复用 I/O(I/O Multiplexing)

  • 解释:程序同时监视多个 I/O 操作,一旦其中一个操作准备好,程序就处理该操作。
  • 举例:你和朋友们一起去奶茶店,每个人点了不同的奶茶。你们坐在旁边等候,当服务员叫出某一杯奶茶的取号码时,作为请客的你会统一去拿所有已完成的奶茶。这样,大家都不需要来回跑动,统一由你一个人处理。

4. 信号驱动 I/O(Signal-driven I/O)

  • 解释:程序为 I/O 操作设置信号处理器,当数据准备好时,操作系统会发送信号通知程序,然后程序再去处理这个数据。
  • 举例:你点完奶茶后,服务员让你留下手机号,奶茶做好后微信小程序或发短信通知你。你离开奶茶店去做其他事情,收到小程序推送或看到短信后再回来拿奶茶。

5. 异步 I/O(Asynchronous I/O)

  • 解释:程序发起 I/O 操作后,不等待数据准备,继续执行其他任务。I/O 操作完成后,操作系统会自动将数据传递给程序,程序接收到结果时直接处理。
  • 举例:你在奶茶隔壁开了炸鸡店,你和奶茶家店员特别熟悉,你上奶茶店点完奶茶后,等待店员奶茶直接送到你家,然后你继续去做自己的事。奶茶做好后,店员会把奶茶送到你家,你收到奶茶时直接享用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值