Libev使用三種數據結構來存儲不同的觀察者。libev觀察者的數據結構
堆:爲觀察員按時間排序,如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
看起來更穩定?
還是其他原因?
好,我明白了。謝謝,馬克!再次感謝您創建libev。 :) – changchang