美文网首页
同步非阻塞IO

同步非阻塞IO

作者: Vongola々骸 | 来源:发表于2018-12-01 13:50 被阅读0次

这篇是无码的,我现在明白为什么无码的市场不好了,我自己都看不下去。各位可以直接跳到后面看我填坑

服务员模型

很多博客都有用餐馆服务员的例子来解释NIO,大概是这么个故事

  说是有那么个酒馆啊,它的掌柜给每桌客人都配个店小二,刚开始还好,反正一天就那么几桌客人,两个店小二就够用了。可是呢,随着客流越来越大,请的店小二就越来越多,这成本就遭不住了

方案1

  聪明的掌柜就发现,其实在客人吃饭的时候,店小二完全是闲下来的,不需要在这里干等着,于是呢...

  故事讲到这里,大家就能发现,呃...偏题了。我们这节要讲的是NIO,嗯,IO划重点,客人吃饭这件事不在IO的范围内,我们这次先不讲,所以上面的故事划掉,我们来讲IO版的故事

方案2

  聪明的掌柜就发现,其实在客人点餐之前,可能要多花点时间考虑考虑,店小二其实不用在这干等着,于是呢...于是掌柜的就想了个办法,让小二把客人带到桌子上,在大堂上挂了个菜单,等客人决定好要点什么菜之后,再叫小二来点菜,这个时候小二就可以去服务别桌的客人了,完美!


同步非阻塞

  1. 啥是同步非阻塞
      什么是同步非阻塞呢,就是你的服务员在客人不需要你的时候不要在这傻等,还可以去做其它事情!放在一个网络请求里面,就是在某个IO事件未就绪的时候,不需要通过阻塞的方式来等待,可以去为其它的IO事件服务
  2. 哪些地方不该阻塞
      这些不需要阻塞等待IO事件都有谁呢?比如等待一个客户端连接(杵在门口等客人进店),比如等待客户端请求数据全部传输完成(杵在桌子前面等客人点菜)。关于write事件,结尾提
  3. 怎么搞
      服务员肯定是不能一直守着一桌客人来服务了。应该是哪桌客人需要就去哪桌。这里涉及到一个叫“反应器模式”的东西,它遵从一个“好莱坞原则”。有兴趣的同学可以去了解一下,这个原则的大体意思是“不要在这傻等着,回去等通知”
  4. 有什么好处
      很明显,对同样多的服务员来讲,可以同时服务更多的客人。也就是同一个线程可以处理更多的连接
  5. 有什么问题
    a. 客人享受不到VIP服务了。这个不算,机器不需要VIP服务
    b. 算了低频大数据量的连接问题就不说了

填坑

  1. 我为什么要写一段没用的方案1
      水字数(手动划掉)我当初看了这个餐馆模型之后,脑子里面就一直都把“吃饭”这一步放在一个网络请求流程中去看NIO,到这里就歪了,歪了很远,其实还没到“吃饭”的时候,一次网络请求就已经完成了。后来者引以为戒,切记!
  2. 如何映射酒馆模型和IO模型
    • 进店:accept事件
    • 点餐:read事件
    • 后厨做菜:服务主业务逻辑
    • 上菜:write事件
  3. 为什么没有提write事件
    write事件的就绪条件是缓冲区有空间可写,这个条件基本上都是满足的,就好像客人在桌子上,做好了都是可以直接端上去的。
  4. 为什么没讲客户端
    瓶颈往往发生在服务端,如果想自己写个NIO的demo,其实你的client直接用传统IO的方式来做也是没啥毛病的
  5. 为什么没有测试小姐姐
    测试小姐姐没有IO基础,不想听我讲NIO...
  6. 想看有码的
    这里

相关文章

  • IO模型

    原文参考链接 四种状态 同步 异步 阻塞 非阻塞 IO分类 同步阻塞IO 同步非阻塞IO 异步非阻塞IO注意: 没...

  • BIO NIO AIO

    BIO:同步阻塞IONIO:同步非阻塞IOAIO:异步非阻塞IO先弄清楚同步、异步,阻塞、非阻塞概念。 io操作分...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

  • I/O详解之BIO,NIO,AIO概念

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 1.IO场景 同步阻塞IO(B...

  • Java Socket IO演进(一)-BIO/NIO/AIO

    1. 概览 Java中主要有三种IO模型,分别是同步阻塞IO(BIO)、同步非阻塞IO(NIO)、异步非阻塞IO(...

  • I/O模型

    一般来说I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO 同步阻塞IO:在此种方式下,用户进程在...

  • java IO、NIO、AIO

    IO流(同步、阻塞) 、 NIO(同步、非阻塞) 、 NIO2(异步、非阻塞) 概述在我们学习Java的IO流之前...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • Java IO

    Before IO 分为:同步、异步阻塞、非阻塞 同步和异步是目的,阻塞和非阻塞是实现方式。 一个IO操作其实分成...

  • 分布式理论架构设计

    IO模型 BIO 同步阻塞 NIO 同步非阻塞 AIO 异步非阻塞 NIO核心组件 Selector Channe...

网友评论

      本文标题:同步非阻塞IO

      本文链接:https://www.haomeiwen.com/subject/fhibfqtx.html