eventfd 对应的文件内容是一个 8 字节的数字,这个数字是 read/write 操作维护的计数。 首先,write 的时候,累加计数,read 的时候读取计数,并且清零。 uint64_t u; ssize_t n; // 写 eventfd,内部 buffer 必须是 8 字节大小; n = write(efd, &u, sizeof(uint64_t)); // 读 eventfd n = read(efd...
eventfd是专门用来传递事件的fd,而epoll池则是专门用来管理事件的池子,它们两结合就妙了。 我们知道epoll监听的是可读可写事件。那么你想过eventfd的可读可写事件是啥吗? “可读可写事件”这是个有趣的问题,我们可以去发散下,对比思考下socketfd,文件fd: socketfd:可以写入发送数据,那么触发可写事件,网卡数据来了,...
eventfd是专门用来传递事件的fd,而epoll池则是专门用来管理事件的池子,它们两结合就妙了。 我们知道epoll监听的是可读可写事件。那么你想过eventfd的可读可写事件是啥吗? “可读可写事件”这是个有趣的问题,我们可以去发散下,对比思考下socketfd,文件fd: socketfd:可以写入发送数据,那么触发可写事件,网卡数据来了,...
简单看下 eventfd 的读写究竟做了什么? eventfd 对应的文件内容是一个 8 字节的数字,这个数字是 read/write 操作维护的计数。 首先,write 的时候,累加计数,read 的时候读取计数,并且清零。 uint64_tu; ssize_tn; // 写 eventfd,内部 buffer 必须是 8 字节大小; ...