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頁面