kqueue(きゅーきゅー)
最終更新:2026/4/27
kqueueは、BSD系のシステムで利用可能なイベント通知機構であり、ファイルディスクリプタに対するI/Oイベントを効率的に監視する。
別名・同義語 イベント通知機構BSD kqueue
ポイント
selectやpollと比較して、より効率的なイベント監視が可能であり、高負荷なネットワークアプリケーションに適している。macOSやFreeBSDなどで利用されている。
kqueueとは
kqueueは、BSD系のオペレーティングシステム(macOS, FreeBSD, OpenBSDなど)で提供される、イベント駆動型のI/O多重化機構です。ファイルディスクリプタ(ソケット、パイプ、ファイルなど)の状態変化(読み込み可能、書き込み可能、エラーなど)を効率的に監視し、イベントが発生した際にアプリケーションに通知します。
kqueueの仕組み
kqueueは、以下の主要な要素で構成されます。
- kqueueオブジェクト: イベント監視の対象となるファイルディスクリプタを登録し、イベントを待ち受けるためのオブジェクト。
- kevent構造体: 監視対象のファイルディスクリプタと、監視するイベントの種類(読み込み、書き込み、エラーなど)を定義する構造体。
- kevent()システムコール: イベントの登録、イベントの待機、イベントの取得を行うためのシステムコール。
アプリケーションは、kqueue()システムコールでkqueueオブジェクトを作成し、kevent()システムコールで監視対象のファイルディスクリプタとイベントの種類を登録します。その後、kevent()システムコールをブロックモードで呼び出すと、イベントが発生するまで処理が一時停止します。イベントが発生すると、kevent()システムコールはイベント情報を返します。
kqueueの利点
- 効率性: selectやpollと比較して、イベントが発生したファイルディスクリプタのみを通知するため、CPUリソースの消費を抑えることができます。
- 拡張性: 大量のファイルディスクリプタを効率的に監視することができます。
- 柔軟性: 様々な種類のイベントを監視することができます。
kqueueの利用例
関連技術
- select
- poll
- epoll (Linux)
- IOCP (Windows)