阻塞 IO和非阻塞IO

定义:

阻塞 I/O 是指在执行 I/O 操作时,进程会被挂起(阻塞),直到 I/O 操作完成。也就是说,当进程发出一个 I/O 请求时,程序会暂停执行,直到数据被完全读取或写入,或者直到 I/O 操作的结果返回。

阻塞 I/O 的工作流程:
  1. 进程发起 I/O 操作(如读取网络数据、读取文件等)。
  2. 操作系统会将请求交给相应的设备驱动程序或内核。
  3. 程序在等待 I/O 操作完成时会被挂起,不能执行其他任务,直到数据完全传输或操作完成。
  4. 完成后,操作系统通知程序,程序继续执行。
塞 I/O 示例:
// 使用阻塞I/O读取数据 
int fd = open("file.txt", O_RDONLY); 
char buffer[256]; 
ssize_t n = read(fd, buffer, sizeof(buffer));  
// 阻塞,直到读取完成 
if (n > 0) {     
// 处理读取的数据 
} 
else {     
// 错误处理 
}
优点:
  • 编程模型简单,逻辑直观。
  • 适用于简单的应用场景,程序执行流程顺序清晰。
缺点:
  • 如果 I/O 操作需要较长时间,进程会一直被挂起,浪费 CPU 时间。这在高并发场景下尤其效率低下。
  • 进程无法处理其他任务,导致资源的低效利用。

非阻塞 I/O(Non-Blocking I/O)</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值