2011-05-21 48 views
6

可以在C++的特定時間調用一個函數嗎?例如,我想在number_of_elapsed_milliseconds_since_application_start = x時啓動函數doIt()。如何在C++的特定時間啓動函數?

跨平臺解決方案將是理想的。

+0

啓動新線程。 '睡眠(number_of_elapsed_milliseconds_since_application_start); doit();' – 2012-04-02 18:18:22

回答

3

在純粹的C++可能不會,你將需要一些操作系統特定的代碼。但是你可以使用一個獨立於平臺的操作系統包裝器,就像Qt一樣(儘管這可能會讓你的問題變得過於矯枉過正)。

編輯:你可以做最簡單的事情,在一個循環正在積極阻止此程序,即不斷地輪詢當前時間,直到達到最後期限,但這可能不是一個非常有用的解決方案。所以沒有線程或一些事件驅動的計時器(如每個操作系統應該有的),你不會走得太遠。

+0

我認爲每個主要的操作系統都有'睡眠'功能,這對於非標準代碼來說是非常重要的。 – 2012-04-02 18:20:13

+0

@MooingDuck好吧,當然隨着C++ 11的出現,我的回答並沒有多大意義。 – 2012-04-02 21:17:17

3

製作一個線程,讓它睡覺,直到那個時候,睡覺之後,讓它運行該功能。

+2

+1,但我會注意到我們沒有使用實時操作系統,所以線程不會在預定的時間完全喚醒,它會有點關閉,取決於當前的機器負載。 – 2011-05-22 11:55:47

相關問題