poll/epoll兼容计时器

Mar*_*enz 0 linux epoll file timer

问候,

我想知道是否有一种方法可以将计时器与linux poll/epoll API结合使用.我已经使用了epoll,如果我可以让计时器成为队列中的另一个epoll事件,它将与现有代码集成得非常好.

可能的方法是,基于文件的Timer,就像

echo 400;now > /dev/timer ; cat /dev/timer ; # outputs after 400ms "now"
Run Code Online (Sandbox Code Playgroud)

就像一个想象的例子.有这样的事吗?或者还有其他方法可以将它与epoll API集成吗?

--Marenz

Mar*_*rkR 5

使用epoll进行定时器是微不足道的,因为epoll_wait也需要一个超时参数; 您只需将所有计时器放入优先级队列并将超时设置为从现在到第一个之间的时间,然后触发该计时器的事件.

或者使用libevent提供类似的东西.

是的你可以使用timerfd()如果你真的想要,但没有必要.