采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
感觉epoll多路复用与AIO有点类似 都是基于一个回调函数来处理 如果epoll也是再事件准备好后通知使用者,那和AIO有什么区别呢?
另外NIO是不是请求IO操作的线程不断询问多路复用器(selector)相应的数据有没有准备好,准备好的话再进行一个读写操作,而不是selector主动调用请求线程,所以是同步的呢?
多路复用相当于操作系统来帮你阻塞监听事件是否到达,当有事件到达的时候就会返回,再根据返回的文件描述符和其类型进程操作,并不需要用户程序去不断轮询,用户程序不断轮询的是非阻塞IO模型,UNP这本书写的很详细。大型网络库框架基本都是基于epoll实现的,比如muduo,Netty,nginx等。
同学好,理解的没错,epoll就是AIO的底层实现:关于NIO同学理解也是对的,同步就是线程要时不时过来看一下数据有没有准备好。
请问翔老师,java的select是应用层轮询的吗?底层不是调用的操作系统的select吗?如果AIO底层是epoll的话,始终会开启额外的线程吧,LINUX上并没有实现真正的异步IO。
同学好,是的,主要就是调用linux底层的库
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.7k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14