Kqueue
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]
参考资料
|
---|
FreeBSD | |
---|
子系统 | |
---|
人物 |
- Jordan Hubbard
- Poul-Henning Kamp
- Mike Karels
- Ben Laurie
- Sam Leffler
- Marshall Kirk McKusick
- Diomidis Spinellis
- Robert Watson
- Dru Lavigne
|
---|
衍生品 | |
---|