BIO/NIO/AIO 三种IO模式概述

时间:2024-03-28 09:29:06

BIO/NIO/AIO 三种IO模式概述

1、BIO(block io 同步阻塞模式)

1. BIO模式问题

1.1 阻塞问题

  • 服务端在接收客户端套接字请求时,accept() 方法阻塞等待:一直等到有客户端接入时才往下执行。

BIO/NIO/AIO 三种IO模式概述

  • 客户端写数据时,阻塞:一直停留在wirte() 这行代码,直到把所有的消息全部写出去,并且服务端接受到消息。

BIO/NIO/AIO 三种IO模式概述

1.2 多线程问题

服务端接收套接字后,都需要开辟一个线程进行处理,非常消耗服务器的性能。BIO/NIO/AIO 三种IO模式概述

2、NIO(none block io 同步非阻塞模式)

buffer缓冲区、channel管道、Selector多路复用器

2.1 Selector

多路复用器的作用:轮询,轮询每个channel管道,查看是否读事件、写事件,若有则处理。通过一个Selector多路复用器,就可以同时处理很多的客户端请求,大大提高了效率,降低了系统开销。

2.2 NIO和BIO本质上属于同步IO

同步:服务端处理客户端请求需要主动查看客户端的消息。

3、AIO(asychronous IO  异步非阻塞模式)

不需要selector多路复用器在管道之间轮询查看,aio是事件驱动形式。也就是当客户端发送数据之后,会主动通知服务器,接着服务器再进行读写操作。