2010-11-01 46 views
0

我想在每2小時後調用一次業務類的功能。 我沒有得到任何方式實現相同的C/C + +中沒有使用while循環。 我的問題是,我不能使用while(1),因爲這不會將控制權重新調回給後續執行。如何在C/C++中實現定時器

任何指針在這方面WUD有所幫助.... :)

thnaks

+1

答案取決於你在哪個平臺上。 Linux呢?視窗?還有別的嗎? – 2010-11-01 07:31:06

+0

只是好奇。如果您的程序尚未作爲事件循環執行,您的程序在2小時內會做什麼? – 2010-11-01 07:33:06

+0

我試圖在Mac OS X上實現這一點,實際上它是一個後臺進程,所以只要系統啓動,它就會始終在後臺運行。 – 2010-11-02 04:45:44

回答

0

在普通的C,我會使用alarm(2)setitimer(2)功能已經考慮。或者,產生一個線程,並從那裏等待。

如果您決定使用報警或setitimer路由,請記住您需要編寫信號處理程序,並且可能需要一個調度循環來指出是時候進行定期維護呼叫了,因爲它被認爲是不好的做法在信號處理程序中做很多事情。

0

對於一個通用的解決方案,你可以啓動一個線程,其中2個小時後發送一些消息給主線程。

對於Linux,可以使用此:

http://linux.die.net/man/3/alarm

,然後處理SIGALRM信號