Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 轮询/epoll兼容计时器_Linux_File_Timer_Epoll - Fatal编程技术网

Linux 轮询/epoll兼容计时器

Linux 轮询/epoll兼容计时器,linux,file,timer,epoll,Linux,File,Timer,Epoll,您好 我想知道是否有一种方法可以将计时器与linux轮询/epoll API结合使用。 我已经使用了epoll,如果我能使计时器成为队列中的另一个epoll事件,它将与现有代码集成得非常好 一种可能的方法是,一个基于文件的计时器,比如 echo 400;now > /dev/timer ; cat /dev/timer ; # outputs after 400ms "now" 就像一个虚构的例子。 有这样的东西吗?或者有没有其他方法可以将它与epollapi集成 --Marenz在这种

您好

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

一种可能的方法是,一个基于文件的计时器,比如

echo 400;now > /dev/timer ; cat /dev/timer ; # outputs after 400ms "now"
就像一个虚构的例子。 有这样的东西吗?或者有没有其他方法可以将它与epollapi集成


--Marenz

在这种情况下,
watch-n0.4
命令有用吗?

在这种情况下,
watch-n0.4
命令有用吗?

用epoll做定时器很简单,因为epoll\uwait也需要一个超时参数;您只需将所有计时器放入一个优先级队列,并将timeout设置为从现在到第一个计时器之间的时间,然后触发该计时器的事件

或者使用libevent,它提供类似的功能


是的,如果您真的愿意,您可以使用timerfd(),但没有必要。

使用epoll做计时器很简单,因为epoll\u wait还需要一个超时参数;您只需将所有计时器放入一个优先级队列,并将timeout设置为从现在到第一个计时器之间的时间,然后触发该计时器的事件

或者使用libevent,它提供类似的功能


是的,如果您真的愿意,您可以使用timerfd(),但没有必要。

我不这么认为。我提到了/dev/timer示例,因为可以使用文件描述符打开/dev/timer,我使用epoll管理文件描述符,这样它就可以工作了,但不需要执行另一个进程--马伦齐不这么认为。我提到了/dev/timer示例,因为可以使用文件描述符打开/dev/timer,我使用epoll管理文件描述符,这样它就可以工作了,但不需要执行另一个进程--Marenz这不完全是我希望的方式,但它仍然有效。谢谢--事实上,计时器fd正是我想要的。太糟糕了,它只适用于linux,虽然这不是我所希望的方式,但它仍然有效。谢谢--事实上,计时器fd正是我想要的。可惜它只适用于linux