1

libev ( source ) 的文档说:

Kqueue 值得特别一提,在撰写本文时,它在除 NetBSD 之外的所有 BSD 上都被破坏(通常它不能可靠地与套接字和管道一起工作,除了在 Darwin 上,它当然完全没用)。

它还提到:

kqueue 系统调用在所有已知版本中都被破坏 - 大多数版本仅支持套接字,许多支持管道。

那么,kqueue 有哪些限制呢?这些限制记录在哪里?最初的研究发现了对旧操作系统(Mac OS X 10.3)上内核恐慌的引用以及对不正确/不完整文档的抱怨。我不知道这些消息来源有多可靠。

特别是,如果 kqueue 确实可以可靠地使用套接字(AF_UNIX、AF_INET 和 AF_INET6),那么我不介意。我对有关 Mac OS X 和 FreeBSD 实现的信息特别感兴趣。

4

2 回答 2

4

在 OS X 上,您不应该遇到AF_UNIX,AF_INETAF_INET6. 如果您想在 OS X < 10.9 上将其与 PTY 一起使用,您将遇到问题,因为这些版本不支持 PTY。有一些证据表明,在 OS X 10.9 上,最终支持 PTY。

如果您尝试使用非文件描述符通知,您将开始遇到其他限制(例如,不支持 AIO)。

我不熟悉 FreeBSD 的 kqueue 实现。也许其他人可以添加一些有关它的信息。

于 2011-05-23T14:06:27.803 回答
1

kqueue在 FreeBSD 上完美运行,至少在网络方面。我已经用多达 180k 个连接的活动套接字测试了自己的网络东西。我不知道 AIO .. 没有测试过自己。

于 2013-03-20T19:24:49.043 回答