当前位置: 首页 > article >正文

【计算机网络】多路转接之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


http://www.kler.cn/a/413160.html

相关文章:

  • <项目代码>YOLOv8 停车场空位识别<目标检测>
  • R包开发时Imports和Suggests区分
  • IDEA:配置Serializable class without ‘serialVersionUID’ 找不到
  • 互联网视频推拉流EasyDSS视频直播点播平台视频转码有哪些技术特点和应用?
  • CodeTON Round 9 (Div. 1 + Div. 2, Rated, Prizes!)(前五道)
  • Spring WebFlux SSE(服务器发送事件)的正确用法
  • 【rustdesk】客户端和服务端的安装和部署(自建服务器,docker,远程控制开源软件rustdesk)
  • Android开发简单mp4播放器
  • JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南
  • 【计算机网络】Wireshark的小测试(Protocol Layers-Wireshark抓包与协议分析实验)
  • 构建Ceph分布式文件共享系统:手动部署指南
  • 在编译Elasticsearch源码时选择Gradle版本
  • 集成 FPGA
  • docker学习的初识
  • Android和Java的发布/订阅事件总线EventBus
  • 决策树——基于乳腺癌数据集与cpu数据集实现
  • 小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你
  • java语言同时处理多个数据以及计算百分比保留整数
  • 【C++】入门【一】
  • 基于SpringBoot+Vue的汽车票网上预订系统-无偿分享 (附源码+LW+调试)
  • 黑马程序员Java项目实战《苍穹外卖》Day01
  • 【NLP 3、深度学习简介】
  • 设计模式——服务定位器模式
  • MySQL大数据量优化:详解与示例
  • 二叉树:堆的建立和应用
  • 记连接不上虚拟机IP