我想在每2小時後調用一次業務類的功能。 我沒有得到任何方式實現相同的C/C + +中沒有使用while循環。 我的問題是,我不能使用while(1),因爲這不會將控制權重新調回給後續執行。如何在C/C++中實現定時器
任何指針在這方面WUD有所幫助.... :)
thnaks
我想在每2小時後調用一次業務類的功能。 我沒有得到任何方式實現相同的C/C + +中沒有使用while循環。 我的問題是,我不能使用while(1),因爲這不會將控制權重新調回給後續執行。如何在C/C++中實現定時器
任何指針在這方面WUD有所幫助.... :)
thnaks
在普通的C,我會使用alarm(2)
或setitimer(2)
功能已經考慮。或者,產生一個線程,並從那裏等待。
如果您決定使用報警或setitimer路由,請記住您需要編寫信號處理程序,並且可能需要一個調度循環來指出是時候進行定期維護呼叫了,因爲它被認爲是不好的做法在信號處理程序中做很多事情。
對於一個通用的解決方案,你可以啓動一個線程,其中2個小時後發送一些消息給主線程。
對於Linux,可以使用此:
http://linux.die.net/man/3/alarm
,然後處理SIGALRM信號
Boost.Asio規定了Timers。
答案取決於你在哪個平臺上。 Linux呢?視窗?還有別的嗎? – 2010-11-01 07:31:06
只是好奇。如果您的程序尚未作爲事件循環執行,您的程序在2小時內會做什麼? – 2010-11-01 07:33:06
我試圖在Mac OS X上實現這一點,實際上它是一個後臺進程,所以只要系統啓動,它就會始終在後臺運行。 – 2010-11-02 04:45:44