timerfd与eventfd
2024-09-09 19:59:30
1、timerfd
timerfd是定时器描述符,通过timerfd_create()来创建它,timerfd_settime()来设置定时器时间,当时间到期定时器文件描述符就可读,所以能够在select/poll/epoll场景下使用。
2、eventfd
eventfd是事件描述符,使用eventfd()来创建它,可以把它当做一个文件描述符,对它做read、write、select/poll/epoll、close操作,因为它有8个字节的读、写缓冲区。比如使用write()向事件描述符写入8个字节的数据来通知事件,使用read()来等待事件。所以其实它类似一个pipe管道,但它比管道更精简,因为它主要用来线程间通信。
比如对于epoll程序,我们在A线程里通过epoll_ctl将连接socket加入到epoll监听,而epoll_wait是在B线程里,虽然epoll函数是线程安全的,但通用或者说是更保险的做法是不在A线程里epoll_ctl,而是通过一个eventfd将epoll_wait唤醒(将eventfd加入epoll监听其可读,A线程往eventfd里写),在B线程里进行epoll_ctl。
待确认的两个问题:
在write之后没有read,但是又write新的数据,那么再read到的是这两次的8个字节的和?
如果read到的长度小于8字节会返回EINVAL错误?
最新文章
- KMP算法分析
- php使用正则过滤js脚本代码实例
- 高可用与负载均衡(6)之聊聊LVS的三种模式
- Xml序列化、反序列化帮助类
- Java IO 技术之基本流类
- Oracle的GUID:Raw(16)
- BFC探秘
- ZOJ1463
- Weblogic的集群
- 【翻译】了解ASP.NET MVC中的Ajax助手
- lnmp环境里安装mssql及mssql的php扩展
- 校园wifi
- jtable时间编辑器
- mybatis 多个接口参数的注解使用方式(@Param)
- maven配置之:<;distributionManagement>;snapshot快照库和release发布库
- JPA 菜鸟教程 15 继承-一个表-SINGLE_TABLE
- dispatch_group_async 使用详解
- IDA 7.0在Mojava更新后打不开的问题
- 数据集 过滤时 RecordCount 属性
- java读取网页图片路径并下载到本地
热门文章
- python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
- GridView和DataFormatString 日期格式 精确小数点后位数
- SQL删除重复数据只保留一条数据
- js 箭头函数
- C# 出现base-64 字符数组的无效长度的解决办法
- PAT 1001 害死人不偿命的(3n+1)猜想 (15)(C++&JAVA&Python)
- hdu 3368 曾经下过的棋
- spring boot (一): Hello World
- bloomfilter 以及count min sketch
- 杭电1518 Square(构成正方形) 搜索