epollがハッシュテーブルの代わりにファイル記述子を管理するためにRed-Blackツリーを使用するのはなぜですか?

epollがハッシュテーブルの代わりにファイル記述子を管理するためにRed-Blackツリーを使用するのはなぜですか?

Linuxシステムコールepoll_ctl(at fs/eventpoll.c)ウォッチリストと呼ばれるRed-Blacktreeを使用して、ファイル記述子イベントに対する関心を作成、削除、または変更します。ウォッチ・リスト見つかりませんepoll_wait、より正確にはのコールバックを待ちます。poll(存在するinclude/linux/poll.h)。したがって、epoll関心のあるファイル記述子イベントを受信する実行時間は、接続数に基づいてO(1)です。N。ただし、レッドブラックツリーを使用しているため、ウォッチリストにファイル記述子を追加、変更、または削除するのにかかる時間の複雑さはO(log(n))です。

ハッシュテーブルは結合の追加と削除と結合の使用に対してO(1)パフォーマンスを提供できますが、なぜRed-Blackツリーを使用してウォッチリストを実装するのですか?妥協は何ですか?

ベストアンサー1

おすすめ記事