2

只是想知道在 linux 上使用 timerfd (timerfd_create) 是否会比 Timer_Heap 或 Timer_Wheel 带来任何性能优势。当然,这是一个非常高级的问题,我看到它在任何框架中使用的唯一地方是“muduo”。另外,我也没有任何性能比较。

谢谢。

4

1 回答 1

2

像 libevent 这样的事件循环库,在最小堆中维护计时器,并将超时传递到下一个计时器到期到select/ epoll。请注意,在这种情况下,添加和删除计时器不涉及任何系统调用,它只是将一个新元素添加到最小堆中。

使用timerfd时,需要 3 个系统调用(timerfd_create()timerfd_settime()epoll_ctl()来创建一个计时器。每次它过期时,您都需要read()从该文件描述符中获取。

timerfd对于没有事件循环的应用程序可能很有用,但对于已经使用像样的事件循环的应用程序来说,它几乎没用。

于 2014-01-29T17:05:27.550 回答