通俗理解多种IO模型
前言
我们以故事来讲我们经常遇到的多种IO模型,首先故事的情节是
老李去买火车票,三天后买到一张退票,其中往返车站耗时1小时。
里面主要包含的人员有:老李,黄牛,售票员,快递员
多种IO模型
阻塞IO模型
老李去火车站买票,排了三天队买到一张退票
耗费:在火车站等了三天,其它一件事都没做
非阻塞IO模型
老李去火车站买票,每隔12个小时去火车站问有没有退票,然后在三天后买到一张票。
耗费:往返车站6次,路上6小时,其它时间做了很多事
IO复用模型
select 和 poll
老李去火车站买票,委托黄牛,然后每个6小时打电话给黄牛咨询,黄牛在三天内买到票,然后老李去火车站交钱取票。
耗费:花费时间打电话17次,并往返火车站2次,黄牛手续费100元
epoll
老李去火车站买票,委托黄牛,黄牛买到票后立即通知老李去领,然后老李去火车站交钱领取
耗费:无需打电话,但是还需要往返火车站2次,黄牛手续费100元
信号驱动IO模型
老李火车站买票,给售票员留下电话,有票后,售票员打电话通知老李,然后老李去火车站交钱领票
耗费:往返车站2次,路上2小时,不需要黄牛费,以及打电话
异步IO模型
老李去火车站买票,给售票员留下电话,有票后,售票员通知老李并快递送票上门
耗费:往返车站1次,无需黄牛费和电话费