• 关于阻塞I/O、非阻塞I/O等,这是迄今为止看到的最形象、贴切的比喻。


    我想寻找一个最形象、贴切的比喻,能将各种I/O描绘清楚的比喻,今天碰巧在一个网站发现了,遗憾的是,这个网站也是转载,所以不知谁是这个比喻的原作者。

    对I/O复用的黄牛比喻真是太精彩了。


    **************************************************************************************************************************************************************************************

    IO多路复用是5种I/O模型中的第3种,对各种模型讲个故事,故事情节为:老李去买火车票,三天后买到一张退票。参演人员(老李,黄牛,售票员,快递员),往返车站耗费1小时。描述下区别:

    1.阻塞I/O模型
    老李去火车站买票,排队三天买到一张退票。
    耗费:在车站吃喝拉撒睡 3天,其他事一件没干。

    2.非阻塞I/O模型
    老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。
    耗费:往返车站6次,路上6小时,其他时间做了好多事。

    3.I/O复用模型
    select: 就是一种实现,进程需要调用的时候,把请求发送给select ,可以发起多个,但是最多只能支持1024个,先天性的限制  
    poll: 没有限制,但是多余1024个性能会下降。

        A.select/poll poll的中文意思就是轮询
        老李去火车站买票,委托黄牛,然后每隔6小时电话黄牛询问,黄牛三天内买到票,然后老李去火车站交钱领票。
        耗费:往返车站2次,路上2小时,黄牛手续费100元,打电话17次

        B.epoll
        老李去火车站买票,委托黄牛,黄牛买到后即通知老李去领,然后老李去火车站交钱领票。
        耗费:往返车站2次,路上2小时,黄牛手续费100元,无需打电话

    4.信号驱动I/O模型
    老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李,然后老李去火车站交钱领票。
    耗费:往返车站2次,路上2小时,免黄牛费100元,无需打电话

    5.异步I/O模型
    老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李并快递送票上门。
    耗费:往返车站1次,路上1小时,免黄牛费100元,无需打电话

    1同2的区别是:自己轮询
    2同3的区别是:委托黄牛
    3同4的区别是:电话代替黄牛
    4同5的区别是:电话通知是自取还是送票上门

    http://www.04007.cn/article/618.html

  • 相关阅读:
    纯CSS3制作的“Ribbons”效果
    iOS 7.1的Safari为meta标签新增minimal-ui属性,在网页加载时隐藏地址栏与导航栏
    关于meta知多少
    mobile开发技巧
    大神给你分析HTTPS和HTTP的区别
    数据库之SQL语句分类
    pip安装第三方包失败
    django之分页
    django之发送电子邮件
    bug之needs to have a value for field "id" before this many-to-many relationship can be used.
  • 原文地址:https://www.cnblogs.com/dapplehou/p/13405758.html
Copyright © 2020-2023  润新知