(二十)深入浅出TCPIP之epoll的一些思考
Epoll基本介绍
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于 select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd 数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:
#define __FD_SETSIZE 1024
表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。
所以先来看看二者的区别:
select的特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。但是如果连接很少的情况下, select和epoll的LT触发模式相比, 性能上差别不大。
这里要多说一句,select支持的句柄数是有限制的, 同时只支持1024个,这个是句柄集合限制的,如果超过这个限制,很可能导致溢出,而且非常不容易发现问题, TAF就出现过这个问题, 调试了n天,才发现:)当然可以通过修改linux的socket内核调整这个参数。
epoll的特点:epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表
(二十)深入浅出TCPIP之epoll的一些思考相关推荐
- (十八)深入浅出TCPIP之epoll的一些思考
Epoll基本介绍 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是epoll.相比于 select,epoll最大的好处在于它 ...
- (二十二)深入浅出TCPIP之实战篇—用c++开发一个http服务器
在当前的网络编程专栏前十几篇文章里,我已经说明了TCPIP常用的一些原理,那么接下来我将逐步进入到实战编程阶段: 本篇文章我将带大家用C++做一个http服务器.既然想实现一个http服务器,首先必须 ...
- (十二)深入浅出TCPIP之Nagle算法
未完待续 专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三)深入浅出TCPIP之再识TCP,理解T ...
- tcp当主动发出syn_(二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)
TCP作为一种可靠传输控制协议,其核心思想:既要保证数据可靠传输,又要提高传输的效率,而用三次握手恰恰可以满足以上两方面的需求! 1.三次握手 所谓的三次握手即TCP连接的建立.这个连接必须是一方主动 ...
- (二十)TCPIP面试宝典-进入大厂必备总结(中)
TCP 作为传输层的协议,是一个IT工程师素养的体现,也是面试中经常被问到的知识点.在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位. 实际上这篇文章相当于是复习之前的网络基础部分.只不过 ...
- (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)
目录 1.三次握手 1.1 三次握手过程 1.2 TCP连接状态 1.3 TCP状态迁移路线分析 1.4 查看TCP状态命令
- (十三) 深入浅出TCPIP之TCP套接字参数
专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三)深入浅出TCPIP之再识TCP,理解TCP四次挥 ...
- (十八)深入浅出TCPIP之HTTP和HTTPS
专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三)深入浅出TCPIP之再识TCP,理解TCP四次挥 ...
- 深入浅出TCPIP之实战篇—用c++开发一个http服务器(二十一)
专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三)深入浅出TCPIP之再识TCP,理解TCP四次挥 ...
最新文章
- CVPR 2019超全论文合集新鲜出炉!| 资源帖
- tomcat设置自动监听替换class文件
- Smobiler实现扫描条码和拍照功能(开发日志八)
- sklearn svm
- Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略
- 依赖注入容器Autofac的详解[转]
- bulk批量下载影像
- C程序设计语言现代方法15:编写大型程序
- 百度天链平台:企业区块链技术赋能产业创新落地
- 将表中的数据生成SQL脚本,在查询分析器中执行这些脚本后自动将数据导入到SQL Server中...
- 电源大师课笔记 2.3
- Unity3D开发资料
- C语言结构体(Struct)——摘自C语言学习网
- 【数学模拟卷总结】2022李林四套卷数学二第一套
- FillRect与FrameRect
- documents4j 实现Word文档、xlsx、等格式转换PDF文件
- 玉田新世纪计算机学校,玉田新世纪中等专业学校2021年招生简章
- UNIX下PageDown健如何捕捉
- Vue-组件嵌套之——父组件向子组件传值
- Android开发开源源代码
热门文章
- make xdb file.php,SCWS入门使用指南
- post修改服务器数据源,postgresql安装及配置超详细教程
- python alter table_python(pymysql)之mysql简单操作
- Web——Request请求
- LSGO软件技术团队2015~2016学年第四周(0921~0927)总结
- SharePoint List item数量超过5000的解决办法
- C#的变迁史03 - C# 3.0篇
- 第五节: Quartz.Net五大构件之Trigger的四大触发类
- 了解 SharePoint 2010 开发中的关键点
- Python如何创建相同值的数组/列表