问题描述
|
libev的文档(源)说:
值得一提的是Kqueue,因为在撰写本文时,它在除NetBSD之外的所有BSD上都被破坏了(通常它不能与套接字和管道一起可靠地工作,除了在Darwin上,当然它是完全没用的) )。
它还提到:
kqueue syscall在所有已知版本中均被破坏-大多数版本仅支持套接字,许多支持管道。
那么,kqueue的局限性是什么?这些限制在哪里记录?最初的研究发现了对旧版操作系统(Mac OS X 10.3)上的内核恐慌的参考,以及有关文档不正确/不完整的投诉。我不知道这些来源有多可靠。
特别是,如果kqueue确实可以与套接字(AF_UNIX,AF_INET和AF_INET6)可靠地一起工作,那么我不在乎。我对有关Mac OS X和FreeBSD实现的信息特别感兴趣。
解决方法
在OS X上,
AF_UNIX
,AF_INET
和AF_INET6
应该没有问题。如果要在OS X <10.9上的PTY中使用它,则会遇到问题,因为这些版本不支持PTY。有证据表明,在OS X 10.9上最终支持PTY。
如果尝试使用非文件描述符通知,您将开始遇到其他限制(例如,不支持AIO)。
我对FreeBSD的kqueue实现不熟悉。也许其他人可以添加有关此信息。
,kqueue
可以在FreeBSD上完美运行,至少对于网络而言。我已经使用最多18万个活动插座对自己的网络进行了测试。我不知道AIO ..还没有测试自己。