Kqueue

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

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

另见

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

  • libevent
  • libuv

其它平台上与 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頁面
FreeBSD项目
FreeBSD
  • FreeBSD核心团队英语FreeBSD Core Team
  • FreeBSD文档许可证英语FreeBSD Documentation License
  • FreeBSD基金会英语FreeBSD Foundation
  • FreeBSD Ports
  • 历史英语History of FreeBSD
子系统
  • busdma英语busdma
  • GEOM英语GEOM
  • Ipfirewall
  • FreeBSD jail
  • Netgraph英语Netgraph
  • OpenPAM英语OpenPAM
  • OpenBSM英语OpenBSM
  • pf英语PF (firewall)
  • Soft updates英语Soft updates
  • ULE scheduler英语ULE scheduler
  • bhyve英语bhyve
  • 高可用存储
  • portsnap英语portsnap
  • kqueue
  • geom raid5英语geom raid5
  • geli英语Geli (software)
  • moused英语moused
  • Vinum volume manager英语Vinum volume manager
人物
  • Jordan Hubbard英语Jordan Hubbard
  • Poul-Henning Kamp英语Poul-Henning Kamp
  • Mike Karels英语Michael J. Karels
  • Ben Laurie英语Ben Laurie
  • Sam Leffler英语Samuel J Leffler
  • Marshall Kirk McKusick英语Marshall Kirk McKusick
  • Diomidis Spinellis英语Diomidis Spinellis
  • Robert Watson英语Robert Watson (computer scientist)
  • Dru Lavigne英语Dru Lavigne
衍生品英语List of products based on FreeBSD
小作品圖示这是一篇與计算机相關的小作品。你可以通过编辑或修订扩充其内容。