简述 BIO, NIO, AIO 的区别
# 简述 BIO, NIO, AIO 的区别
linux中所有的外部设备都是一个文件,socket也是一个文件,有文件描述符(fd)指向它。
BIO (Blocking I/O) | NIO (Non-blocking/New I/O) | AIO (Asynchronous I/O) | |
---|---|---|---|
描述 | 在用户进程空间调用recvfrom,直到有数据才读取数据并返回 | 轮训调用recvfrom,直到有数据 | 通知内核数据读取操作即可。用户进程不需要等待并读取数据。 |
图示 | ![]() | ![]() | ![]() |
使用场景 | 活动连接数不是特别高(小于单机 1000)的情况 | 对于高负载、高并发的(网络)应用,应使用 NIO 的非阻塞模式来开发 | 我发现就目前来说 AIO 的应用还不是很广泛,Netty 之前也尝试使用过 AIO,不过又放弃了。 |
编辑 (opens new window)
上次更新: 2022/05/19, 21:26:01