kqueue 是一种可扩展的事件通知接口。2000 年 7 月发布的 FreeBSD 4.1 中首次引入了 kqueue[1],随后也被 NetBSDOpenBSDmacOS 等操作系统支持。

kqueue 在内核用户空间之间充当输入输出事件的管线。因此在事件循环的迭代中,进行一次 kevent(2) 系统调用不仅可以接收未决事件,还可以修改事件过滤器。

另见

编辑

支持 kqueue 且与操作系统无关的库:

其它平台上与 kqueue 等价的库:

  • Solaris、Windows、AIX:IOCP
  • Linux:
    • epoll 系统调用语义类似,但并不完全相同。epoll 在文件描述符可进行 I/O 操作时进行通知,而 kqueue 和 IOCP 都在请求的操作完成时进行通知。
    • inotify 是 Linux 上的内核子系统,可以在文件系统发生变化时通知应用程序。

libkqueue 是在用户空间实现的 kqueue(2),将调用翻译为操作系统原生的事件机制。[2]

参考资料

编辑
  1. ^ 存档副本 (PDF). [2018-12-05]. (原始内容存档 (PDF)于2020-10-18). 
  2. ^ GitHub上的libkqueue頁面