Kqueue は、カーネルとユーザーランドの間で効率的な入出力イベント パイプラインを提供します。したがって、メイン イベント ループの繰り返しごとに kevent(2) へのシステム コールを 1 つだけ使用しながら、保留中のイベントを受信するだけでなく、イベント フィルタを変更することもできます。これは、poll(2) や select(2) などの従来のポーリング システム コールとは対照的です。これらのシステム コールは、特に多数のファイル ディスクリプタでイベントをポーリングする場合に効率が低下します。
それはいいです。私は自分のサーバーに FreeBSD をターゲットにしており、かなりの量のネットワーク ソケット fd を処理しています - それらすべてで select() を使用し、誰からデータを読み取るかを考え出しています。kevent() 呼び出しを使用してパフォーマンスを向上させたいと思います。それが目的だからです!
ここで FreeBSD の kevent の man ページを読みましたが、それは不可解であり、それを説明する適切なリソースが見つかりません。kevent を使用して select を置き換える例は、私の問題を解決し、kevent() の使用方法をよりよく理解するのにも役立ちます。