eventfd

eventfd 在内核版本,2.6.22以后有效。查看内核版本可以用命令 uname -r 。

  • 原型
#include <sys/eventfd.h>
int eventfd(unsigned int initval, int flags);

efd = eventfd(0, 0);
if (efd == -1)
    handle_error("eventfd");
  • 作用

    • eventfd顾名思义就是事件fd类型,就是专门用于事件同志的文件描述符(fd)
    • eventfd 是一个计数相关的fd,计数不为零是有可读事件发生 write 仅仅是加计数,read 是读计数,并且清零
  • eventfd 结合epoll
    eventfd 是专门用来传递事件的 fd ,而 epoll 池则是专门用来管理事件的池子,它们两结合就妙了
    eventfd 可以和 libaio & epoll 一起,实现 Linux 下的纯异步 IO
    ext4 这种文件 fd 一直可读可写,所以实现 poll 毫无意义。eventfd 一直可写,所以监听可写毫无意义;
    eventfd 可以结合业务,做一个事件通知的通信机制,非常巧妙;

上一篇:javascript获取鼠标位置


下一篇:I/O多路复用详解