1 本质上都是同步I/O

  三者都是I/O复用,本质上都属于同步I/O。因为三者只是负责通知应用程序什么时候数据准备好了,实际的I/O操作还是在由应用程序处理;如果是异步I/O的话,实际I/O由内核处理,然后再通知应用程序。这一点要搞清楚。

  select、poll函数介绍:http://www.cnblogs.com/qiaoconglovelife/p/5488871.html

  epoll函数介绍:http://www.cnblogs.com/qiaoconglovelife/p/5503473.html

2 相比select、poll,epoll的缺点:

  (1)Linux系统独有:epoll函数并不是Unix系统通用,所以不适合开发兼容性强的程序;

  (2)select、poll都只有一个函数,而epoll有三个(epoll_create,epoll_ctl和epoll_wait),操作起来更复杂,并且由于要实现回调机制,epoll的内部实现也更加复杂。如果并发量小且连接不频繁的话,最好使用select和poll,性能可能更好。

3 相比select、poll,epoll的优点  

  (1)每次调用select、poll,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大,而epoll函数只有使用epoll_ctl函数时才会进行fd的拷备,并且只拷备增加的fd;

  (2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大,而epoll函数只传递所有新注册事件的fd;

  (3)select支持的文件描述符数量太小了,默认是1024,而epoll函数所支持的FD上限是最大可以打开文件的数目,这个数字一般远大于2048。

转载于:https://www.cnblogs.com/qiaoconglovelife/p/5735936.html

select、poll、epoll区别总结相关推荐

  1. select,poll,epoll区别面试常问

    select,poll,epoll区别: select优点 1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而pol ...

  2. select,poll,epoll区别

    2019独角兽企业重金招聘Python工程师标准>>> select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024.当fd的值超过1024限制时 ...

  3. select,poll,epoll区别。

    1,select的用法 fd_set fd_in, fd_out; struct timeval tv;// Reset the sets FD_ZERO( &fd_in ); FD_ZERO ...

  4. IO模型(select, poll, epoll的区别和原理)

    参考<unix网络编程> 参考http://blog.csdn.net/blueboy2000/article/details/4485874 参考http://blog.csdn.net ...

  5. select/poll/epoll 与 /dev/poll

    select/poll 这两种实际上差不多,都是把一组fd传送给kernal,然后返回一个就绪fd的数量,然后开始遍历所有的fd,找到那些可读或者可写的. 区别在于,poll相比select来说,传送 ...

  6. IO多路复用select,poll epoll以及区别

    看这个一次读懂 Select.Poll.Epoll IO复用技术 文章来简单理解下,如果不是很明白的话,可以参考下面转的知乎上面白话文列子 作者:Leslie 链接:https://www.zhihu ...

  7. C++面试 select poll epoll之间的区别

    目录 摘要 场景描述 Select poll epoll 总结 摘要 先明确几个概念: 面试官问:给我讲讲什么事同步阻塞.异步阻塞.同步非阻塞.异步非阻塞. 我:????? 同步和异步的概念 同步是指 ...

  8. java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)

    BIO blocking阻塞的意思,当我们在后端开发使用的时候,accetp 事件会阻塞主线程. 当accept事件执行的时候,客户的会和服务建立一个socket 连接.一般后端就会开启一个线程执行后 ...

  9. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)

    一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 1 简单的启动线程语法 2 def run(na ...

  10. select poll epoll IO操作多路复用及猴子补丁

    一:select(能监控数量有限,不能告诉用户程序具体那个连接有数据) select目前几乎所有的平台都支持,其良好的跨平台支持也是一个优点 select的缺点在于单个进程能够监控的文件描述的数量存在 ...

最新文章

  1. android 搜索框 github,Github上Android简单好用的提示框推荐 | 夕辞
  2. 使用Lucene开发自己的搜索引擎
  3. 报错笔记:cannot convert parameter 1 from 'char [1024]' to 'unsigned char *'
  4. 机器学习(三十)——Model-Free Control
  5. wpf中的datagrid中如何显示图片
  6. java 示例_功能Java示例 第5部分–将I / O移到外部
  7. Tengine(Nginx)动静分离简要配置
  8. c语言中逗号是什么字符,C语言中的逗号操作符
  9. 通用的实时数仓构建方法与实践
  10. 限制文本输入框只能输入0-9数字
  11. 基金盘后业务的详细设置
  12. Windows下sqlmap安装方法
  13. 云计算8项核心技术分析
  14. Chrome浏览器快捷键大全
  15. 下拉列表—DropDownMenu的使用解析
  16. 【FPGA的小娱乐】tft显示屏生成信号辅助测试阵列
  17. 彻底搞懂内存屏障(上)
  18. 研究发现,每天冲洗鼻腔,可减少新冠症状和死亡风险
  19. 如何撤销命令make install的安装结果,或者如何卸载Linux 库library ?
  20. 使用Remmina远程登录Ubuntu系统并实现文件共享(可实现类似Teamviewer功能)

热门文章

  1. python3高性能网络编程_Python高级网络编程系列之基础篇
  2. IP地址,子网掩码,默认网关,DNS服务器是什么意思?
  3. JVM学习04-垃圾回收概念与算法
  4. linux远程登录提示WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
  5. [渝粤教育] 龙岩学院 Web信息系统应用开发 参考 资料
  6. [渝粤教育] 广东-国家-开放大学 21秋期末考试标准的研制与编制★10003k1
  7. 【渝粤教育】国家开放大学2018年春季 8643-22T数据库基础与应用 参考试题
  8. django drf 改变retrive的pk查询字段
  9. django的命令, 配置,以及django使用mysql的流程
  10. 网络编程(三)--通信循环、链接循环、粘包问题