NIO中,selector,poll,epoll的概念
今天刚刚像明白了selector的运作机制,(这里不是问题是我个人的理解,有想看的顺便帮我指正错误,谢谢)
个人对NIO中的Selector的认识是: 这个东西类似快递的分捡员,过来一个快递就把它放到相应的分类区域,没有的话就不停检查有没有快递来。其实维护Selector的线程或许只有一个,所以在selector层面它还是同步的(没有异步的回调机制)。但是每当有一个请求到达等待队列并被Selector轮训到了,就会被它分发下去,这样也就是非阻塞的体现。
下面是问题正文
网上看到NIO中的多路复用的实现有三种,select,poll,epoll。这仨概念我一直不太明白,或者说他们的区别不是很理解。有没有人能简单的说说呢?(百度查到的都在分析linux c源码这不是我想要的啊!!!最后还是不懂。。。能不能简单的举例子或者跟别的做做对比)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Select模型是说,有线程不断询问内核是否有数据到达, 数据到达就直接拿出来,放到相应的回调上去。而epoll模型却是由内核收到数据以后, 通知相应的监听者。 这两者有本质的差别, epoll是内核原生支持。性能上来讲一定数量级以下,select模型与epoll差距不大, 一定的数量级以上,则epoll性能更高。
没有数量限制?什么数量限制?链接?
@rpgmakervx 文件描述符数量,当文件描述符都是socket的时候可以理解为链接