2013-03-16 38 views
0

我想在Windows上使用c + +和msvc2010寫一個小警報計時器。計時器需要在幾分鐘後觸發狀態消息。我知道如何使用C++檢查系統時間,我知道windows api中有睡眠功能。我怎樣才能用很少的CPU負載實現一個計時器?例如,我不想每隔幾毫秒檢查一次系統時間,以在觸發時間到達時觸發狀態消息。當在一個額外的線程中使用諸如睡眠(600000)之類的東西時,是否創建cpu加載,或者是否有更有效的方法等待幾分鐘,然後再執行一些代碼?c + +警報計時器,只有很少的CPU負載

回答

1

你的確可以忙着等待並輪詢時間。即使是Sleep(1)也足以讓您的程序幾乎無法衡量。

我曾經這樣做「回到當天」,甚至在我的PII 233 Mhz上運行多線程這樣做,它幾乎不會影響CPU使用率。

+0

感謝您對數學家1975和Joachim Pileborg的快速反應。所以創建線程並使用sleep(600000)等待10分鐘不是最糟糕的主意?我可以接受100毫秒的誤差。 – wildcat 2013-03-16 17:04:57

+0

@ user1993851恰恰相反,你的程序在大約十分鐘內什麼都不會做,沒有任何東西我根本沒有任何意義。 – 2013-03-16 17:06:21

+0

好的,謝謝.. – wildcat 2013-03-16 17:08:53

1

你可以創建一個線程,寫一個連續的循環,在這個循環中你只需要在觸發器需要運行的時間間隔內休眠,然後打印消息。如果你需要在2分鐘內運行它,爲什麼選擇多個小睡眠值並檢查時間?這會浪費CPU時間。