>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 14276 个阅读者 刷新本主题
 * 贴子主题:  套接字通信:select、poll、epoll的区别 回复文章 点赞(0)  收藏  
作者:Jacky    发表时间:2021-06-24 10:06:30     消息  查看  搜索  好友  邮件  复制  引用

        

核心对比

   Select:主动询问模式,用户态切换到内核态,内核态如果读取到数据的情况下,则从内核态拷贝数据到用户态。

epoll:事件回调方式,内核态如果读取到数据的情况下,内核态将拷贝到用户态,可以避免用户态与内核态的切换耗时。

对比详情

对比项 Select Poll Epoll【事件驱动的poll】
文件描述 默认最大连接数1024,可自定义 使用链表实现,无最大连接数 有上限,但很大。1G内存机器可以打开10W链接
Socket方式 一个个轮询,socket增多则性能下降,还 存在空轮训,时间复杂度O(n) 稍微优化,但机制相同,时间复杂度O(n) 使用callback函数实现,只有活跃的socket才会调动callback,时间复杂度O(1)
内存空间拷贝(消息传递方式) 内核态拷贝到用户态非常耗时 和select相同 内存态和用户态共享内存,不存在拷贝
其他 支持跨平台,对文件描述符有限制 无文件描述符限制


           点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

    
----------------------------
原文链接:https://www.jianshu.com/p/2917793b2705

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2021-08-30 22:13:49 重新编辑]
  Java面向对象编程-->Swing组件(下)
  JavaWeb开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->数据库事务的概念和声明
  Java网络编程-->XML数据处理
  精通Spring-->Vue组件开发基础
  Vue3开发-->虚拟DOM和render()函数
  利用堆栈将中缀表达式转换成后缀表达式
  解决javac编译错误: 编码UTF8/GBK的不可映射字符
  Java虚拟机安全性-class文件检验器
  面试官:NIO的优化实现原理了解吗?图文结合教你如何正确避坑
  Java设计模式:接口隔离原则和迪米特法则详解
  请求大佬们的帮助
  深入研究java.lang.ThreadLocal类
  分布式锁的原理和实现
  Java设计模式:观察者模式
  Java入门实用代码:死锁及解决方法
  Java 入门实用代码:从 List列表中 截取子列表
  Java入门实用代码:链表元素查找
  Java入门实用代码:文件重命名
  Java 入门实用代码:取最大和最小值
  jdbc连接各种数据库代码
  更多...
 IPIP: 已设置保密
树形列表:   
歐博百家樂是一間合法註冊的娛樂公司,提供包含真人娛樂... kericnnoe 2023-03-07 00:26:56
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。