>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19698 个阅读者 刷新本主题
 * 贴子主题:  套接字通信: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面向对象编程-->泛型
  JavaWeb开发-->自定义JSP标签(Ⅱ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->ServerSocket用法详解
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->组合(Composition)API
  为网站代码块pre标签增加一个复制代码按钮代码
  10道Java编程基础练习题
  Java Optional 解决空指针异常总结
  使用策略模式优化代码实践,如何让项目快速起飞
  最实用的10个重构小技巧排行榜,你都用过哪些?
  Java多线程volatile详解
  Java设计模式:迭代器模式
  redis持久化问题处理
  java比c++强大之处JVM垃圾收集算法
  Java入门实用代码:死锁及解决方法
  Java 入门实用代码:汉诺塔算法
  Java程序初始化顺序(一看就懂)
  通过java.net.URL类连接HTTP服务器时获取响应结果的头部信息
  Java判断一个字符是否为中文字符
  中国有多少程序员?现在还值得学java吗?
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 kericnnoe 
威望: 未知
级别: 未知
魅力: 未知
经验: 未知
现金: 未知
发文章数: 未知
注册时间: 未知
 复制  引用


歐博百家樂是一間合法註冊的娛樂公司,提供包含真人娛樂、龍虎鬥、牛牛百家樂、輪盤、骰寶等多元的線上博弈遊戲,並擁有最完整的博弈系統

歐博百家樂是一間合法註冊的娛樂公司
发文章时间 2023-03-07 00:26:56
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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