请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

epoll多路复用活跃连接“活跃”的概念是什么样的呢

感觉epoll多路复用与AIO有点类似 都是基于一个回调函数来处理
如果epoll也是再事件准备好后通知使用者,那和AIO有什么区别呢?

另外NIO是不是请求IO操作的线程不断询问多路复用器(selector)相应的数据有没有准备好,准备好的话再进行一个读写操作,而不是selector主动调用请求线程,所以是同步的呢?

正在回答 回答被采纳积分+3

2回答

GreyFoss 2020-12-14 09:29:45

多路复用相当于操作系统来帮你阻塞监听事件是否到达,当有事件到达的时候就会返回,再根据返回的文件描述符和其类型进程操作,并不需要用户程序去不断轮询,用户程序不断轮询的是非阻塞IO模型,UNP这本书写的很详细。大型网络库框架基本都是基于epoll实现的,比如muduo,Netty,nginx等。

1 回复 有任何疑惑可以回复我~
翔仔 2020-08-26 00:32:03

同学好,理解的没错,epoll就是AIO的底层实现:关于NIO同学理解也是对的,同步就是线程要时不时过来看一下数据有没有准备好。

0 回复 有任何疑惑可以回复我~
  • 请问翔老师,java的select是应用层轮询的吗?底层不是调用的操作系统的select吗?如果AIO底层是epoll的话,始终会开启额外的线程吧,LINUX上并没有实现真正的异步IO。
    回复 有任何疑惑可以回复我~ 2020-12-14 09:54:30
  • 翔仔 回复 GreyFoss #2
    同学好,是的,主要就是调用linux底层的库
    回复 有任何疑惑可以回复我~ 2020-12-15 00:24:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信