2009-12-22 30 views
0

問候,民意測驗/ epoll的兼容定時器

我想知道如果在組合使用計時器與Linux的民意測驗/ epoll的API的方式。 我已經使用epoll,它會整合非常好的現有代碼,如果我可以讓計時器成爲我隊列中的另一個epoll事件。

一種可能的方法,大概是,基於文件的定時器,如

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

只是作爲一個假想例子。 有沒有這樣的事情?或者有其他方法可以將它與epoll API集成嗎?

--Marenz

回答

5

使用epoll執行定時器是微不足道的,因爲epoll_wait也需要超時參數;您只需將所有定時器放入優先級隊列中,並將超時設置爲從現在到第一個定時器之間的時間,然後觸發該定時器的事件。

或者使用使用libevent來提供類似的東西。

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

+1

這不完全是我所希望的,但它仍然有效。 謝謝。 --Marenz – Marenz 2009-12-23 13:19:17

+0

其實,timer fd正是我想要的。儘管如此,它只能用於Linux – Marenz 2011-05-05 11:26:54

0

請問watch -n 0.4命令在這種情況下,有什麼用處?

+0

我不這麼認爲。我提到了/ dev/timer示例,因爲/ dev/timer可以使用filedescriptor打開,並且我使用epoll管理文件描述符,所以它可以工作,但不會執行另一個進程。 --Marenz – Marenz 2009-12-22 14:24:46