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