美文网首页
网络IO实现方式

网络IO实现方式

作者: codingBen | 来源:发表于2018-02-25 12:31 被阅读0次

1.BIO方式

BIO即Blocking IO,采用阻塞的方式实现。也就是一个Socket套接字需要使用一个线程来进行处理。发生建立连接,读数据,写数据操作的时候,都可能会阻塞。

    这样操作虽然很简单,但是一个线程只能处理一个Socket

    那么在支持并发的连接,就需要更多的线程来完成这个工作。

2.NIO方式

 NIO即是Nonblocking IO,基于事件驱动思想,采用的是Reactor模式。带来的好处是不需要为每个Socket套接字分配一个线程,而可以在一个线程中处理多个Socket套接字相关的工作。

工作模式:统一通过Reactor对客户端的Socket套接字的事件做处理,然后派发到不同的线程中。这样就解决了BIO中为了支撑更多Socket套接字而需要打开更多线程的问题。

3.AIO方式

   AIO即AsynchronousIO,就是异步IO。AIO采用的是Proator模式,AIO与NIO的差别是,AIO在进行读写操作的时候,只需要调用相应的read/write方法,并且需要传入CompletionHandler(动作完成的处理器) 在完成动作后再调用CompletionHandler,当然,在不同的系统上会有一些细微的差异,不同的语言在SDK上也会有些差异,但总体就是这样的工作方式。NIO的通知发生在动作之前,是在可写,可读的时候,Selector发现这些时间后调用Handler处理。AIO在通知的时候表示相关操作已经完成。

相关文章

  • 网络IO实现方式

    1.BIO方式 BIO即Blocking IO,采用阻塞的方式实现。也就是一个Socket套接字需要使用一个线程来...

  • Java IO快速入门

    网络IO实现方式分为BIO(阻塞IO)、线程池伪异步IO、NIO(非阻塞IO)、AIO(异步非阻塞IO); 异步、...

  • 转载:Ceph的网络层实现

    在现在的网络编程实现中,大多数项目都会采用基于事件通知的异步网络 IO 方式来实现。目前无论是 Epoll 还是 ...

  • 持续精进_java语言3

    一,IO java.io 包,提供了通过输入输出流的方式来实现网络通信。 很多时候,java.net 下面提供的部...

  • 关于异步

    对于网络io而言,网络io有epoll kqueue 等等实现,但是文件io就没有统一的标准,libuv的做法是,...

  • 网络编程3-BIO编程

    Blocking IO一种同步阻塞的编程方式 一、实现过程 服务端启动一个ServerSocket来监听网络请求 ...

  • Redis 小记

    网络 IO 模型 redis 采用 io 多路复用,默认采用 epoll 方式,也提供了 kqueue、selec...

  • IO多路复用详解

    IO多路复用详解 IO多路复用的实现方式 我们这里只讨论linux两个典型的实现,select和epoll sel...

  • NIO究竟牛X在哪?

    在进入NIO之前,先回顾一下Java标准IO方式实现的网络server端: 这是一个经典的每连接每线程的模型,之所...

  • select,poll,epoll

    简单概述 select,poll,epoll都是用来实现IO多路复用的机制,在Linux网络模型中对应着IO复用模...

网友评论

      本文标题:网络IO实现方式

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