【计算机网络】多路转接之poll

poll也是一种linux中的多路转接方案(poll也是只负责IO过程中的"等")

解决:1.select的fd有上限的问题;2.每次调用都要重新设置关心的fd

一、poll的使用

int poll(struct pollfd * fds**,** nfds_t nfds**,** int timeout**);**


struct pollfd * fds:动态数组(struct pollfd类型的数组)

nfds_t nfds:数组元素个数

int timeout:>0 在timeout以内阻塞,否则非阻塞返回一次;=0 非阻塞等待;<0 阻塞等待

④ 返回值:同select(ret>0:返回有几个fd就绪了;ret==0:超时返回了;ret<0:调用失败)


struct pollfd结构体

struct pollfd { int fd; short events; short revents; };

events 用户告诉内核(输入型):要帮我关心fd的event事件 -> 输入看fd+events

revents 内核告诉用户(输出型):你关心的fd有哪些事已经就绪了 -> 输出看fd+revents

events和revents的取值

二、poll的特点

1.输入输出分离:poll不需要对参数进行重新设定

2.自定义数组个数:解决select等待fd有上限的问题

3.poll需要遍历整个struct pollfd *****fds数组 -> 为了解决这种问题 -> epoll

相关推荐
A.零点1 分钟前
【2个月 C 语言从入门到精通:零基础系统教程】第十二讲:深入了解指针(五)
c语言·开发语言·网络·笔记·visual studio
月光刺眼1 分钟前
Bun + TypeScript 后端入门:从类型约束到 LLM API 调用
后端·typescript
万岳科技4 分钟前
教育培训系统开发流程详解:平台建设关键环节解析
数据库·后端·学习
Java编程爱好者4 分钟前
服务里的 Redis 锁惊群问题:一次本地合流优化实践
后端
Nturmoils6 分钟前
线上修一批脏数据,先别急着全量重来
数据库·后端
飞天狗11111 分钟前
零基础JavaWeb入门——第五课第一小节:九大内置对象 · 第1个:request(请求对象)
java·开发语言·前端·后端·servlet
z落落11 分钟前
C#ToolStrip+StatusStrip 状态栏实时显示系统时间+NotifyIcon系统托盘
开发语言·c#
志栋智能13 分钟前
从固定周期到动态触发:超自动化巡检的智能调度
运维·网络·自动化
插件开发22 分钟前
vs2015 cuda c++ 线程号的计算详解
开发语言·c++·算法
石山代码22 分钟前
变量与解构
开发语言·前端·javascript