epoll/select
为什么80%的码农都做不了架构师?>>>
epoll相对select优点主要有三:
1. select的句柄数目受限,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024 表示select最多同时监听1024个fd。而epoll没有,它的限制是最大的打开文件句柄数目。
2. epoll的最大好处是不会随着FD的数目增长而降低效率,在selec中采用轮询处理,其中的数据结构类似一个数组的数据结构,而epoll是维护一个队列,直接看队列是不是空就可以了。epoll只会对"活跃"的socket进行操作---这是因为在内核实现中epoll是根据每个fd上面的callback函数实现的。那么,只有"活跃"的socket才会主动的去调用 callback函数(把这个句柄加入队列),其他idle状态句柄则不会,在这点上,epoll实现了一个"伪"AIO。但是如果绝大部分的I/O都是“活跃的”,每个I/O端口使用率很高的话,epoll效率不一定比select高(可能是要维护队列复杂)。
3. 使用mmap加速内核与用户空间的消息传递。无论是select,poll还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的。
转载于:https://my.oschina.net/guyson/blog/220222
epoll/select相关推荐
- Linux下多路复用IO接口epoll/select/poll的区别
select比epoll效率差的原因:select是轮询,epoll是触发式的,所以效率高. Select: 1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认 ...
- 关于阻塞I/O 非阻塞I/O 同步I/O 异步I/O epoll select的学习
之前参考了这篇文章,下面写一写笔记 阻塞IO 非阻塞IO 1.blocking IO linux中默认的socket都是阻塞的 用户进程发出系统调用后,数据未准备好,进程阻塞..之后内核中有两个阶段: ...
- python3 异步 非阻塞 IO多路复用 select poll epoll 使用
有许多封装好的异步非阻塞IO多路复用框架,底层在linux基于最新的epoll实现,为了更好的使用,了解其底层原理还是有必要的. 下面记录下分别基于Select/Poll/Epoll的echo ser ...
- epoll和select区别
先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法 一.问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻 ...
- python poll_python IO 多路复用 select poll epoll
select select 原理 select 是通过系统调用来监视着一个由多个文件描述符(file descriptor)组成的数组,当select()返回后,数组中就绪的文件描述符会被内核修改标记 ...
- IO多路复用 select、poll、epoll
什么是IO多路复用 在同一个线程里面, 通过拨开关的方式,来同时传输多个(socket)I/O流. 在英文中叫I/O multiplexing.这里面的 multiplexing 指的其实是在单个线程 ...
- Python中的select、epoll详解
Python中的select.epoll详解 文章目录 Python中的select.epoll详解 一.select 1.相关概念 2.select的特性 1.那么单进程是如何实现多并发的呢??? ...
- Python异步非阻塞IO多路复用Select/Poll/Epoll使用
来源:http://www.haiyun.me/archives/1056.html 有许多封装好的异步非阻塞IO多路复用框架,底层在linux基于最新的epoll实现,为了更好的使用,了解其底层原理 ...
- IO多路复用(select,poll,epoll)详解
前言 学习多路复用之前,搞清楚同步,异步,阻塞 非阻塞.点击见详情 清楚一些概念: (1) fd全称是file descriptor,是进程独有的文件描述符表的索引 (2)recv: int recv ...
最新文章
- 征集佳句-精妙SQL语句收集
- dubbo学习笔记 第四章构建dubbo的web应用 上
- Markdown 语法说明
- redis的info指令详解
- spring框架如何调用异步方法?快进来学学吧
- Vs + Qt 编译 .ui 文件
- uva 10245 The Closest Pair Problem_枚举
- C语言 floor四舍五入,Math函數的四舍五入,Floor,Ceiling,Round的一些注意事項!...
- 社交媒体电影视频网HTML5模板
- 好玩的问答,看看你的年龄阶段哦
- 九问国产操作系统,九大掌门人万字回应!
- Linux入门之VIM快捷使用
- 基于先验LiDAR点云地图的单目VIO定位
- KNN算法实验-采用UCI的Iris数据集和DryBean数据集
- swiper实现移动端导航和内容板块的联动
- TKMybatis的使用大全和例子(example、Criteria、and、or)
- mysql里一个中文多少个字节_mysql里中文占多少个字节?
- 迭代期望和方差(iterated expectation,variance)
- 《Fundamentals of Computer Grahpics》虎书第三版翻译——第一章 介绍
- 广州Uber优步司机奖励政策(2月1日~2月7日)
热门文章
- 改善代码设计 —— 简化条件表达式(Simplifying Conditional Expressions)
- iOS开发之AVKit框架使用
- java并发编程——并发容器类介绍
- head和tail命令详解
- 「hadoop」hadoop启动需要相关的命令(仅供本人使用)
- linux awk命令
- [IOS]UIWebView实现保存页面和读取服务器端json数据
- MySQL5.5加主键锁读问题
- Unity 简单示例代码和向导/Unity Aplication Block
- 上交2017计算机专业就业,上海交通大学计算机科学与工程系(CSE)