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看起来更稳定?
还是其他任何原因?