多路复用IO模型——POLL_EPOLL 📅 发布时间:2026/7/15 20:45:56 👁️ 浏览次数: 在了解其他的多路复用IO接口的区别1.selectselect接口的优缺点select监听的文件描述符集合是一个数组存在存储上限select监听的文件描述符集合在应用层当事件发生时会发生一次内核层向应用层的数据拷贝会产生资源开销select只能工作在水平触发模式select必须将所有的文件描述符集合中的元素找一遍才能找到产生事件的文件描述符2.pollpoll接口的优缺点poll监听的事件集合在用户态的链表中没有上限的限制poll监听的文件描述符集合在应用层当事件发生时会发生一次内核层向应用层的数据拷贝会产生资源开销poll只能工作在水平触发模式poll必须将所有的文件描述符集合中的元素找一遍才能找到产生事件的文件描述符3.epollepoll的优缺点没有文件描述符存储上限限制epoll在内核中创建了一张监听的事件表事件表在内核中不需要与应用层进行交互效率较高epoll可以工作在水平触发低速工作状态与边沿触发高速工作状态epoll可将发生io事件的文件描述符返回不需要手动检测所有文件描述符是否有IO事件发生函数接口:POLL:poll;原型int poll(struct pollfd *fds,nfds_t nfds,int timeout)功能监听集合中的文件描述符是否有IO事件发生参数fds监听Io事件集合的数组首地址nfds事件数组的元素个数timeout超时时间为-1时程序一直阻塞等待返回值成功时返回产生时事件的个数失败时返回-1时间到达没有事件发生返回0EPOLL1.epoll_create:原型int epoll_create(int size)功能创建一张在内核中用于监听发生IO事件的事件表参数size事件表的事件个数返回值成功返回事件表文件描述符失败返回-12.epoll_ctl原型int epoll_ctl(int epfdint op,structe epoll_event *event,int maxevent,int timeout)功能向内核事件表中添加修改删除事件参数epfd内核事件表文件描述符opEPOLL_CTL_ADD 添加事件EPOLL_CTL_MOD 修改事件EPOLL_CTL_DEL 删除事件fd操作的文件描述符event事件集合返回值成功返回0失败返回-1epoll_wait原型int epoll_wait(int epfds,struct epoll_event *event,int maxlen,int timeout)功能参数event存放产生事件空间的首地址maxevent数组的大小timeout超时时间返回值成功返回事件的文件描述符个数失败返回-1超过时间没有事件发生返回0
MiniCPM-o-4.5-nvidia-FlagOS入门实战:上传本地图片实现视觉问答的5分钟上手体验 MiniCPM-o-4.5-nvidia-FlagOS入门实战:上传本地图片实现视觉问答的5分钟上手体验 你是不是也遇到过这样的场景:手头有一张复杂的图表、一张产品设计图,或者一张随手拍的风景照,想快速了解图片里的信息,却不知道从何问… 2026/7/13 15:42:55
性能问题定位记录-1 背景 性能压测时,部分docker cpu达到100%了,测试要求解决。定位思路 cpu使用率有差异,本人认知内有2种情况: 1、负载不均衡 2、机器性能本身有差异 机器性能差异排查 可以通过GC日志,快速判断。如果回收相同的内存&… 2026/7/11 8:15:49
降重不降质,去AI不留痕:百考通让原创表达真正被系统识别 论文写到最后一公里,却在查重和AI检测上栽了跟头?重复率偏高、AI概率爆表,明明是自己一字一句敲出来的,怎么就被系统“误判”成抄的、甚至是AI代写的?别急,这真不是你的问题——而是现在的审核机制太“敏感… 2026/7/13 13:42:39
深入解析TPS929120-Q1故障安全机制:从诊断原理到汽车LED驱动实战 1. 项目概述:为什么我们需要深入理解TPS929120-Q1的故障安全机制? 在汽车尾灯、内饰氛围灯,或是工业控制面板的指示灯设计中,LED驱动芯片的可靠性直接关系到整个系统的安全与稳定。想象一下,高速公路上行驶的汽车&… 2026/7/15 20:45:09
从并环到串环:智能车摄像头组F车模控制算法实战解析与调参心得 1. F车模控制的核心挑战与解决思路F车模(万向轮结构)与传统的C车模(舵机双电机结构)在控制逻辑上存在本质差异。最显著的特点是F车模的转向和速度控制都依赖于两个电机,这种执行机构耦合会带来三个典型问题:… 2026/7/15 20:45:09
链表和红黑树 链表与红黑树:从1955年的IPL到HashMap的树化——起源、相同与区别想听听这两个结构是怎么来的,历史渊源能不能串起来。好,今天咱们就玩一次“技术考古”,从1955年的磁带机时代开始,一直聊到Java 8里HashMap那个经典的树… 2026/7/15 20:43:08
C#与OpenTK实战:从零构建可交互三维地球模型 1. 项目概述:为什么用C#和OpenTK来“捏”一个地球?如果你是一名C#开发者,想在自己的桌面应用里嵌入一个能转、能看、能交互的三维地球,但又不想被Unity、Unreal这类重型游戏引擎的庞大生态和复杂概念吓退,那么OpenTK几… 2026/7/15 20:43:08
MySQL索引详解:什么是索引?为什么能提升查询效率? 前言只要学MySQL,索引是性能优化的核心。很多新手只知道“加索引查询快”,但完全不懂:索引到底是什么?为什么能提速?不加索引为什么慢?这篇文章用通俗白话图书馆类比底层原理,零基础彻底搞懂索引… 2026/7/15 20:35:04
高端品牌官网怎么做出质感?页面设计与转化布局实战建议,全程零代码,BBWEYY:AI+SAAS+GEO模式 一、为什么企业要先搭建自己的官网在 奢侈品箱包腕表销售 赛道里,企业真正缺的往往不是一个“能展示”的网站,而是一套能持续成交、能承接流量、能沉淀客户的线上增长系统。BBWEYY 的 AISAASGEO 模式,本质上就是把“建站、运营、获客”三件事… 2026/7/15 20:33:03
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41