2014-01-29 12 views
2

Было просто интересно, будет ли использование timerfd (timerfd_create) для linux давать какое-либо преимущество в производительности по сравнению с Timer_Heap или Timer_Wheel. Несомненно, это очень высокий вопрос, и единственное место, где я видел его использование в любых рамках, - «muduo». Также у меня нет каких-либо сравнений производительности.Использование linux timerfd для реализации тайм-аутов в реакторе опроса Dev

Спасибо.

ответ

1

Библиотеки событий, такие как libevent, поддерживают таймеры в мини-куче и передают таймаут до истечения следующего таймера до select/epoll. Обратите внимание, что добавление и удаление таймера не связано с системными вызовами в этом сценарии, оно просто добавляет новый элемент в мини-кучу.

При использовании timerfd, он принимает 3 системных вызовов (timerfd_create(), timerfd_settime() и epoll_ctl()) только для создания таймера. И каждый раз, когда он истекает, вам необходимо указать read() из этого файлового дескриптора.

timerfd может быть полезен для приложений без цикла событий, но для тех, которые уже используют приличный цикл событий, он практически бесполезен.

+0

В схеме muduo используется цикл событий, но тогда я не уверен, что он используется в качестве стандартной сетевой структуры. Но на данный момент я возьму ваше слово, что timerfd довольно бесполезен для epoll/select и т. Д. – Arunmu