Redis面试系列:通俗理解多种IO模型

本文以故事形式讲解了IO模型,包括阻塞、非阻塞、IO复用(select、poll、epoll)、信号驱动和异步IO。通过老李买火车票的故事,形象地阐述了各种模型的原理和区别。文章还介绍了Linux中的基础概念,如用户空间/内核空间、进程切换、文件描述符和缓存IO。最后,详细分析了select、poll和epoll的优缺点及适用场景。
摘要由CSDN通过智能技术生成

通俗理解多种IO模型

前言

我们以故事来讲我们经常遇到的多种IO模型,首先故事的情节是

老李去买火车票,三天后买到一张退票,其中往返车站耗时1小时。

里面主要包含的人员有:老李,黄牛,售票员,快递员

多种IO模型

阻塞IO模型

老李去火车站买票,排了三天队买到一张退票

耗费:在火车站等了三天,其它一件事都没做

非阻塞IO模型

老李去火车站买票,每隔12个小时去火车站问有没有退票,然后在三天后买到一张票。

耗费:往返车站6次,路上6小时,其它时间做了很多事

IO复用模型

select 和 poll

老李去火车站买票,委托黄牛,然后每个6小时打电话给黄牛咨询,黄牛在三天内买到票,然后老李去火车站交钱取票。

耗费:花费时间打电话17次,并往返火车站2次,黄牛手续费100元

epoll

老李去火车站买票,委托黄牛,黄牛买到票后立即通知老李去领,然后老李去火车站交钱领取

耗费:无需打电话,但是还需要往返火车站2次,黄牛手续费100元

信号驱动IO模型

老李火车站买票,给售票员留下电话,有票后,售票员打电话通知老李,然后老李去火车站交钱领票

耗费:往返车站2次,路上2小时,不需要黄牛费,以及打电话

异步IO模型

老李去火车站买票,给售票员留下电话,有票后,售票员通知老李并快递送票上门

耗费:往返车站1次,无需黄牛费和电话费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值