IO模型和多路复用

一、IO模型的基础理解

什么是IO?

IO全称是 Input/Output(输入/输出),在计算机科学里主要指程序与外部设备(硬盘、网络、用户终端等)进行数据交换的操作。首要特点是:

  • IO通常很慢(从CPU和内存的视角看)
  • 经常需要等待外部设备响应

1. 为什么要谈IO模型?

当一个程序需要读写数据(比如网络服务器接收请求,或者读取硬盘文件),操作系统必须处理这些操作的细节,尤其涉及到“等待”。

假设你的程序是单线程的,如果你直接调用阻塞IO函数,比如 read() 从网络读数据:

  • 如果数据没到,程序就卡住等待,什么都干不了。
  • 这样程序效率低下,不能同时处理大量IO请求。

所以应用程序和操作系统设计了不同的“IO模型”来解决这个问题:让程序更高效地处理IO,避免堵塞,能够同时处理多个客户端请求。

2. IO模型分类

常见的IO模型主要有:

  1. 阻塞IO(Blocking IO)
  2. 非阻塞IO(Non-blocking IO)
  3. IO复用(Multiplexing IO)
  4. 信号驱动IO(Signal-driven IO)
  5. 异步IO(Asynchronous IO)

二、每种IO模型详细解释和代码示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2301_80355452

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值