微信号:jsj_xx

介绍:二十年IT领域工作经验的一线资深码农阐述对计算机技术的透彻理解!内容涵盖编程语言、操作系统内核(linux)及应用、网络、安全、通信设备、算法、机器学习等多个领域.

理解网络IO模型(三)

2015-07-05 14:34

作者:新浪微博(@NP等不等于P)

计算机学习微信公众号(jsj_xx)

回顾一下select。

核心的数据结构poll_wqueues,它作为沟通具体设备和select/poll框架的桥梁,非常关键。从设计上看,如果仅监控一个fd,那么完全可以直接把这个poll_wqueues当作一个poll_table用就可以了,但是现在是检测多个,所以就只能从poll_wqueues里分解出多个poll_table了(一个poll_table检测某一个fd的某一个事件)。

相比select,poll只是小的改动,那么我们就对比着看看:

1)fd set由数组改为链表

【这个小改动大大简化了代码,再也不用担心fd最大数目的问题了,也不用再逐一bit比较每个fd set的bitmap了】

2)timeout支持到纳秒级别

【更精确了】

3)支持restart poll

【如果被信号中断,可以重新启动】

4)系统调用的参数中将检测事件和事件的结果分开

【依然没改变kernel和userspace之间的拷贝次数】

除此之前,poll和select可以说完全一样,也就是说还是没有改变select里多次遍历所有fd这个最大缺点!我们下次看epoll如何解决的。。。(未完待续)

关于我们

新浪微博(@NP等不等于P)

计算机学习微信公众号(jsj_xx)

原创技术文章,感悟计算机,透彻理解计算机!

【计算机学习微信公众号:jsj_xx】

文完,谢谢阅读!




 
计算机学习 更多文章 CVE-2015-1635 理解c语言的sizeof 理解TCP协议的重传时间(上) 理解TCP协议的重传时间(下) 关于TCP重传超时时间的几个问题
猜您喜欢 2015年最热门编程语言岗位需求及薪资分析 关于妊高症请听专业人士的意见 有问有答 香农的信息论究竟有多牛? 深入浅出搜索原理系列之(二)查询构建