Linux I/O多路转接----poll模型
来源:互联网 发布:裤子品牌 知乎 编辑:程序博客网 时间:2024/05/21 22:51
1.poll模型属于I/O多路转接模型,是对select模型的一种优化;
int poll(struct pollfd *fds,nfd_t nfds,int timeout);
2.poll的优点:
①poll使用数组存储文件描述符,所以能描述的文件描述个数在理论上没有上限;
②poll将输入输出型参数进行了分离,因此使用时不需要重新设置;③不要求计算最大文件描述符加1的值,处理大数目文件描述符时比select的速度快;
3.poll的缺点:
①poll是系统调用,每次都要将文件描述符数字组从用户态拷贝到内核态,开销很大;
②虽然poll在理论上对描述的文件描述个数没有上限,但每次调用poll,都要遍历所有的文件描述符,当数量很多时,开销很大,会降低性能和效率;
4.实现一个poll服务器,监控输入:
#include<stdio.h>#include<poll.h>int main(){ struct pollfd evs; evs.fd=0; evs.events=POLLIN;//当关心多个事件时,使用| evs.revents=0; int timeout=3000; while(1) { switch(poll(&evs,1,timeout)) { case -1:perror("poll"); break; case 0:printf("timeout...\n"); break; default: {//至少有一个数据就绪 char buf[1024]; if(evs.revents & POLLIN) { ssize_t s=read(evs.fd,buf,sizeof(buf)-1); if(s>0) {//读成功 buf[s]=0; printf("echo#%s\n",buf);//回显 } } } } } return 0;}
结果如图所示:
阅读全文
0 0
- Linux I/O多路转接----poll模型
- 【Linux】I/O多路转接poll
- Linux—I/O多路转接之poll
- I/O多路转接至poll
- I/O多路转接之poll
- I/O多路转接之poll
- I/O多路转接之poll
- I/O多路转接之poll
- I/O多路转接之poll
- I/O多路转接之poll
- I/O多路转接-----poll
- I/O多路转接之poll
- I/O多路转接之poll
- I/O多路转接之poll
- Linux网络编程【七】:TCP协议高性能服务器(http)模型之I/O多路转接poll
- Linux的I/O多路转接模型和select()
- I/O多路转接模型
- 多路复用 I/O 多路转接 select / poll / epoll
- 用JS做一个简单的电商产品放大镜功能
- 百度地图android6.0以上地图不显示
- Python实现二叉树
- OpenCV—基本矩阵操作与示例
- python 中文字符乱码的问题
- Linux I/O多路转接----poll模型
- GridView控件的“编辑”,“删除”不可用的问题
- mybatis动态sql中的trim标签的使用
- FileZilla Server Failed to initialize ssl library 问题解决
- Kotlin教程学习-数据类型
- 课堂在线Java程序设计 最大公约数和最小公倍数
- Appium之appium-desktop使用指南
- WeX5动态生成data,并绑定动态生成的list
- 从1到n整数中1出现的次数:O(logn)算法