嵌入式linux网络编程之I/O多路复用select
来源:互联网 发布:欧莱雅 曼秀雷敦 知乎 编辑:程序博客网 时间:2024/06/12 23:07
多进程和多线程的目的是在于最大限度地利用CPU资源,当某个进程不需要占用太多CPU资源,而是需要I/O资源时,可以采用I/O多路复用,基本思路是让内核把进程挂起,直到有I/O事件发生时,再把控制返回给程序。这种事件驱动模型的高效之处在于,省去了进程和线程上下文切换的开销。整个程序运行在单一的进程上下文中,所有的逻辑流共享整个进程的地址空间。缺点是,编码复杂,而且随着每个逻辑流并发粒度的减小,编码复杂度会继续上升。
I/O多路复用典型应用场合(摘自UNP6.1)
select的模型就是这样一个实现,把每个客户的请求放入事件队列中,主线程通过非阻塞的I/O来处理他们。
select详细的用法和fd_set结构见:UNP的CH6
几个Tips
1、select在等待期间会被进程捕获的信号中断,从严谨的角度出发,应处理好EINTR错误
2、内核实际支持的时间分辨率比timeval结构的微秒级粗糙
3、select每次返回的是已就绪的总的描述位数,并把未就绪的位清0(三个fd_set参数都是值-结果参数)因此每次重新调用select时需重新对所有集合置1
阅读全文
0 0
- 嵌入式linux网络编程之I/O多路复用select
- Linux网络编程---I/O多路复用 之 select
- Linux--高级I/O多路复用之select
- Linux网络编程---I/O多路复用之epoll
- Linux 网络编程中的I/O多路复用
- I/O多路复用之select
- I/O 多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O多路复用之select
- I/O 多路复用之select
- 网络编程(3)学习多路复用(I/O)函数select
- 网络编程(4)select函数实现I/O多路复用服务器
- IntelliJ IDEA破解教程
- 集训第三天,打卡
- PHP+TP框架生成使用微信JS-SDK所需的配置信息,并验证
- tomcat和HTTP协议详解
- 20170626 Linux Window System infrastructure
- 嵌入式linux网络编程之I/O多路复用select
- hiho-hihoCoder挑战赛29-D-不上升序列
- 连续整数的和
- Spring Boot : 自动JSON转换和热部署(二)
- bzoj 1704: [Usaco2007 Mar]Face The Right Way 自动转身机
- Android源码下载和编译
- Oracle删除当前用户下的所有表、视图、序列、函数、存储过程、包
- Soot:从头创建一个类
- 算法十七周解题报告