Libevは、3つのデータ構造を使用して、さまざまなウォッチャーを格納します。
ヒープ:ev_timer
やなどの時間でソートされたウォッチャー用ev_periodic
。
リンクリスト:ev_io
、、などev_signal
。ev_child
配列:ev_prepare
、、などev_check
。ev_async
ヒープを使用してタイマーウォッチャーを格納することは間違いありません。しかし、リンクリストと配列を選択する基準は何ですか?
ev_ioウォッチャーを格納するデータ構造は少し複雑に見えます。これは最初にfd
、インデックスとしての配列であり、配列内の要素はのリンクリストですev_io watcher
。リンクリストを要素として使用する場合は、配列にスペースを割り当てる方が便利です。それが理由ですか?
または、の挿入または削除操作ev_io
がより頻繁で、ev_prepare
より安定しているように見えるという理由だけで?
または他の理由はありますか?