为什么Netty使用NIO而不是AIO?

NIO VS AIO

理论上,AIO是真正的异步IO,IO吞吐量是要高于NIO的。两种IO模式的概念如下:

  1. NIO:IO复用模型,仍是阻塞IO,通过复用IO线程提升吞吐量;
  2. AIO:线程A执行IO操作时,注册回调函数,当IO操作执行完成后,内核通知应用层,由线程B执行回调逻辑;

为什么Netty使用NIO而不是AIO?

原因:在Linux系统上,AIO的底层实现仍使用EPOLL,与NIO相同,因此在性能上没有明显的优势;Windows的AIO底层实现良好,但是Netty开发人员并没有把Windows作为主要使用平台考虑。

We obviously did not consider Windows as a serious platform so far, and that’s why we were neglecting NIO.2 AIO API which was implemented using IOCP on Windows. (On Linux, it wasn’t any faster because it was using the same OS facility - epoll.)

参考:

  1. https://github.com/netty/netty/issues/2515;
  2. https://github.com/netty/netty/issues/2515
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值