kqueue 是一种可扩展的事件通知接口。2000 年 7 月发布的 FreeBSD 4.1 中首次引入了 kqueue[1],随后也被 NetBSD、OpenBSD、macOS 等操作系统支持。
kqueue 在内核与用户空间之间充当输入输出事件的管线。因此在事件循环的迭代中,进行一次 kevent(2)
系统调用不仅可以接收未决事件,还可以修改事件过滤器。
另见
支持 kqueue 且与操作系统无关的库:
其它平台上与 kqueue 等价的库:
- Solaris、Windows、AIX:IOCP
- Linux:
- epoll 系统调用语义类似,但并不完全相同。
epoll
在文件描述符可进行 I/O 操作时进行通知,而 kqueue 和 IOCP 都在请求的操作完成时进行通知。 - inotify 是 Linux 上的内核子系统,可以在文件系统发生变化时通知应用程序。
libkqueue
是在用户空间实现的 kqueue(2)
,将调用翻译为操作系统原生的事件机制。[2]
参考资料
- ^ 存档副本 (PDF). [2018-12-05]. (原始内容存档 (PDF)于2020-10-18).
- ^ 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) | |
---|
|
| 这是一篇與计算机相關的小作品。您可以通过编辑或修订扩充其内容。 |