kqueue 是一种可扩展的事件通知接口。2000 年 7 月发布的 FreeBSD 4.1 中首次引入了 kqueue,随后也被 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),将调用翻译为操作系统原生的事件机制。
参考资料
评论 (0)