>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 14497 个阅读者 刷新本主题
 * 贴子主题:  套接字通信: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面向对象编程-->Lambda表达式
  JavaWeb开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->Spring、JPA与Hibernate的整合
  Java网络编程-->对象的序列化与反序列化
  精通Spring-->Vue指令
  Vue3开发-->创建综合购物网站应用
  CRMEB_Java新零售社交电商系统
  [求助] 如何观看孙老师的课程视频
  java的三种随机数生成方式
  Java函数式接口和Stream流
  Java虚拟机(JVM)参数配置说明
  面试问我,创建多少个线程合适?我该怎么说
  害怕面试被问HashMap?
  Java中的受查异常与非受查异常区别
  java NIO示例以及流程详解
  Java多线程volatile详解
  Java设计模式:观察者模式
  Java设计模式:装饰器模式
  Java设计模式:组合模式
  java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍
  【Java 并发笔记】CountDownLatch 相关整理
  更多...
 IPIP: 已设置保密
树形列表:   
歐博百家樂是一間合法註冊的娛樂公司,提供包含真人娛樂... kericnnoe 2023-03-07 00:26:56
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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