Unix 网络编程 select 与 epool 函数的区别
来源:互联网 发布:黑龙江农垦网络 编辑:程序博客网 时间:2024/05/18 15:52
epool与select的区别:
select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,一般来说内存越大,fd上限越大,1G内存都能达到大约10w左右。
select的轮询机制是系统会去查找每个fd是否数据已准备好,当fd很多的时候,效率当然就直线下降了,epoll采用基于事件的通知方式,一旦某个fd数据就绪时,内核会采用类似callback的回调机制,迅速激活这个文件描述符,而不需要不断的去轮询查找就绪的描述符,这就是epool高效最本质的原因。
无论是select还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的,而select则做了不必要的拷贝
select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,一般来说内存越大,fd上限越大,1G内存都能达到大约10w左右。
select的轮询机制是系统会去查找每个fd是否数据已准备好,当fd很多的时候,效率当然就直线下降了,epoll采用基于事件的通知方式,一旦某个fd数据就绪时,内核会采用类似callback的回调机制,迅速激活这个文件描述符,而不需要不断的去轮询查找就绪的描述符,这就是epool高效最本质的原因。
无论是select还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的,而select则做了不必要的拷贝
0 0
- Unix 网络编程 select 与 epool 函数的区别
- UNIX网络编程——epoll 系列函数简介、与select、poll 的区别
- unix网络编程之socket:epoll 系列函数简介、与select、poll 的区别
- 《unix网络编程》(13)select、shutdown函数
- Linux网络编程之socket:epoll系列函数简介,与select,poll函数的区别
- UNIX网络编程——shutdown 与 close 函数 的区别
- UNIX网络编程——shutdown 与 close 函数 的区别
- UNIX网络编程——shutdown 与 close 函数 的区别
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- linux网络编程:epoll 系列函数简介、与select、poll 的区别
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- unix网络编程 select函数和shutdown函数
- UNIX网络编程——select函数的并发限制和 poll 函数应用举例
- UNIX网络编程——select函数的并发限制和 poll 函数应用举例
- UNIX网络编程——select函数的并发限制和 poll 函数应用举例
- FAILED: Error in metadata: MetaException(message:Got exception: java.net.ConnectException Call to ha
- hdu4472 递推
- hdu 1205 吃糖果
- 堆排序与桶排序
- 黑马程序员———多线程
- Unix 网络编程 select 与 epool 函数的区别
- linux下基于QT openCV的图像处理
- 只能录话筒声音不能录播放内容的解决方法
- 异步串行通讯和同步串行通讯区别
- LeetCode 罗马数字转整数
- linux shell 字符串操作(长度,查找,替换)详解
- JENKINS配置QQ邮箱接收邮件
- poj 1258 Agri-Net
- 一看就懂的,java深拷贝浅拷贝