NIO中,selector,poll,epoll的概念

发布于 2021-11-26 17:00:40 字数 410 浏览 452 评论 3

今天刚刚像明白了selector的运作机制,(这里不是问题是我个人的理解,有想看的顺便帮我指正错误,谢谢)

个人对NIO中的Selector的认识是: 这个东西类似快递的分捡员,过来一个快递就把它放到相应的分类区域,没有的话就不停检查有没有快递来。其实维护Selector的线程或许只有一个,所以在selector层面它还是同步的(没有异步的回调机制)。但是每当有一个请求到达等待队列并被Selector轮训到了,就会被它分发下去,这样也就是非阻塞的体现。

下面是问题正文

网上看到NIO中的多路复用的实现有三种,select,poll,epoll。这仨概念我一直不太明白,或者说他们的区别不是很理解。有没有人能简单的说说呢?(百度查到的都在分析linux c源码这不是我想要的啊!!!最后还是不懂。。。能不能简单的举例子或者跟别的做做对比)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

飘然心甜 2021-11-30 17:15:22

Select模型是说,有线程不断询问内核是否有数据到达, 数据到达就直接拿出来,放到相应的回调上去。而epoll模型却是由内核收到数据以后, 通知相应的监听者。 这两者有本质的差别, epoll是内核原生支持。性能上来讲一定数量级以下,select模型与epoll差距不大, 一定的数量级以上,则epoll性能更高。

噩梦成真你也成魔 2021-11-29 14:44:24

没有数量限制?什么数量限制?链接?

输什么也不输骨气 2021-11-28 05:31:47

@rpgmakervx 文件描述符数量,当文件描述符都是socket的时候可以理解为链接

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文