2014-01-29 13 views
2

執行暫停使用Linux timerfd的想知道使用timerfd(timerfd_create)的爲Linux是否會給予超過Timer_Heap或Timer_Wheel任何性能優勢。 當然,這是一個非常高的水平的問題,我所看到的唯一的地方,它在任何框架正在使用的「muduo」。還有,我沒有任何的性能比較,以及。在開發民調反應器

謝謝。

回答

1

像libevent這樣的事件循環庫將定時器維護在最小堆中,並將超時值傳遞到下一個定時器到期時間爲select/epoll。請注意,在這種情況下,添加和刪除計時器不涉及任何系統調用,它只是在最小堆中添加一個新元素。

當您使用timerfd時,需要3個系統調用(timerfd_create(),timerfd_settime()epoll_ctl())才能創建一個計時器。每次到期時,您需要從該文件描述符中獲得read()

timerfd可能是沒有一個事件循環應用,但對於那些已經在使用一個體面的事件循環是幾乎無用。

+0

的muduo框架確實使用一個事件循環,但當時我不知道,如果作爲一個標準的網絡架構其正。但是現在,我會說你的話,timerfd對於epoll/select等是沒用的。 – Arunmu