【问题标题】:Use of linux timerfd for implementing timeouts in Dev poll reactor使用 linux timerfd 在 Dev poll reactor 中实现超时
【发布时间】:2014-02-20 22:34:21
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: c++ timer epoll ace reactor


    【解决方案1】:

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

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

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

    【讨论】:

    • muduo框架确实使用了事件循环,但是我不确定它是否被用作标准的网络框架。但是现在,我会相信你的话,timerfd 对于 epoll/select 等非常无用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多