news 2026/4/22 19:11:26

eventfd

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
eventfd

1 是什么?

eventfd 是 Linux 系统提供的一种轻量级事件通知机制, 它允许用户态应用之间,或内核与应用之间,通过一个特殊的文件描述符来传递和等待事件。 其核心是一个由内核维护的 64位无符号整数计数器 (uint64_t)。
简单来说,你可以把它想象成一个能跨线程/进程使用的计数器: 写事件:一个线程通过 write 操作增加计数器的值,代表“事件发生”。 读事件:另一个线程通过 read 操作读取并处理该值,代表“处理事件”

2 如何使用 eventfd

创建 eventfd 使用 eventfd 函数创建,需要包含头文件 <sys/eventfd.h>。 initval 指定计数器初始值,flags 用于配置行为。
#include<sys/eventfd.h>inteventfd(unsignedintinitval,intflags);
initval: unsigned int 类型,指定 eventfd 内部计数器的初始值。 必须 ≥ 0,通常设为 0 表示初始无事件。 flags: int 类型,用于控制 eventfd 的行为。可以通过按位或(|)操作设置多个标志, 常见的标志包括 EFD_CLOEXEC、EFD_NONBLOCK 和 EFD_SEMAPHORE。 返回值:成功时返回一个新的文件描述符(非负整数);失败时返回 -1,并设置 errno 来指示具体错误。
EFD_NONBLOCK: 以非阻塞方式打开。若计数器为0,read会立即返回EAGAIN错误,而不是阻塞等待。 EFD_CLOEXEC: 设置“exec时关闭”标志,在调用exec执行新程序时会自动关闭,可以防止文件描述符泄漏。 EFD_SEMAPHORE: 启用信号量语义。读取时,计数器的值会减1(而非清零),并且read始终返回1。
写入事件 使用标准 write 函数向 eventfd 写入一个 uint64_t 类型的值, 该值会累加到内核计数器上 读取事件 使用 read 读取,会返回一个 uint64_t 类型的值, 并根据创建时是否设置 EFD_SEMAPHORE 而有不同行为
默认模式(未设置EFD_SEMAPHORE): read成功读取后,计数器的值会被原子性地重置为0,并返回重置前的值。 信号量模式(设置了EFD_SEMAPHORE): read成功读取后,计数器的值会被原子性地减1,并固定返回1。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 19:10:32

机器人半马成绩从近3小时压缩到50分,打破了人类世界纪录,「跑赢」后,它们真正的战场在哪里

最近有个消息在机器人圈子里炸开了锅。2025年北京亦庄的人形机器人半马&#xff0c;宇树科技的机器人跑出了50分钟出头的成绩。你可能没什么概念&#xff0c;我换个参照物&#xff0c;人类男子半马世界纪录是57分31秒&#xff0c;由乌干达选手Jacob Kiplimo在2021年创造。也就是…

作者头像 李华
网站建设 2026/4/22 19:10:24

别让翻译软件,悄悄拔了你通往下一个时代的网线

春节过完没多久&#xff0c;北京降温&#xff0c;地铁站外面的冷风刮得像刀子。我刚从一个老伙计的公司出来&#xff0c;被原来团队里的产品经理小林硬拉着去旁边吃烤串。小林今年三十四了&#xff0c;背着回龙观一套老破小的房贷&#xff0c;刚迎来了二胎&#xff0c;整个人肉…

作者头像 李华
网站建设 2026/4/22 19:08:20

大麦网抢票脚本终极指南:Python自动化购票完整教程

大麦网抢票脚本终极指南&#xff1a;Python自动化购票完整教程 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为热门演唱会门票秒光而烦恼吗&#xff1f;当周杰伦、五月…

作者头像 李华
网站建设 2026/4/22 19:08:20

终极解决方案:零依赖Vue 3跑马灯组件的完整指南

终极解决方案&#xff1a;零依赖Vue 3跑马灯组件的完整指南 【免费下载链接】vue3-marquee A simple marquee component with ZERO dependencies for Vue 3. 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-marquee 在现代Web开发中&#xff0c;动态内容展示是提升用…

作者头像 李华
网站建设 2026/4/22 19:08:16

从零调参到稳定运行:FOC电机速度环与位置环PID参数整定实战记录

从零调参到稳定运行&#xff1a;FOC电机速度环与位置环PID参数整定实战记录 当你的FOC电机终于转起来&#xff0c;却发现它要么反应迟钝得像没睡醒&#xff0c;要么抖得像个筛子&#xff0c;这时候就该请出PID参数整定这门艺术了。我见过太多开发者在这个阶段陷入"调参地狱…

作者头像 李华