1

libev ( source ) のドキュメントには、次のように書かれています。

Kqueue は特筆に値します。この記事の執筆時点では、NetBSD を除くすべての BSD で壊れていました (通常、Darwin を除いて、ソケットとパイプ以外では確実に動作しませんが、Darwin ではもちろん完全に役に立ちません)。

また、次のことにも言及しています。

kqueue syscall は既知のすべてのバージョンで壊れています。ほとんどのバージョンはソケットのみをサポートし、多くのバージョンはパイプをサポートしています。

では、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_INET、およびAF_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 に答える