2009-12-22 6 views
0

Salutations,poll/epoll compatible minuterie

Je me demandais s'il y a un moyen d'utiliser une minuterie en combinaison avec l'API de sondage linux/epoll. J'utilise déjà epoll et ça s'intégrerait très bien avec le code existant si je pouvais faire de la minuterie un autre événement epoll dans ma file d'attente.

Une façon est peut-être, une minuterie à base de fichiers, comme

echo 400;now > /dev/timer ; cat /dev/timer ; # outputs after 400ms "now" 

comme un exemple imaginaire. Y a-t-il quelque chose comme ça? Ou y a-t-il d'autres façons de l'intégrer à l'API epoll?

--Marenz

Répondre

5

Il est trivial de faire des temporisateurs avec epoll, car epoll_wait prend également un paramètre de temporisation; vous mettez simplement toutes vos minuteries dans une file d'attente prioritaire et définissez le délai d'attente entre le moment présent et le premier, puis déclenchez les événements pour cette minuterie.

Ou utilisez use libevent qui fournit quelque chose de similaire.

Oui, vous pouvez utiliser timerfd() si vous le voulez vraiment, mais ce n'est pas nécessaire.

+1

Ce n'est pas exactement ce que j'espérais, mais ça marche toujours. merci. --Marenz – Marenz

+0

en fait, timer fd est exactement ce que je voulais. Dommage que ce soit seulement pour Linux, bien que – Marenz

0

Est-ce que la commande watch -n 0.4 être une utilisation dans cette situation?

+0

Je ne pense pas. J'ai mentionné l'exemple/dev/timer, parce que/dev/timer pouvait être ouvert en utilisant un fichier filedescriptor et que je gérais des descripteurs de fichiers avec epoll, de sorte que cela fonctionnerait, mais pas en exécutant un autre processus. --Marenz – Marenz