Использование linux timerfd для реализации тайм-аутов в реакторе опроса Dev

Мне было просто интересно, даст ли использование timerfd (timerfd_create) для Linux какое-либо преимущество в производительности по сравнению с Timer_Heap или Timer_Wheel.
Конечно, это вопрос очень высокого уровня, и я видел единственное место, где он использовался в любой среде, — это «muduo». Кроме того, у меня также нет никаких сравнений производительности.

Благодарю.

2

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]