2012-08-29 82 views
2

我希望有人能夠幫助我解決這個(英語不是我的母語,所以我很抱歉提前任何語法或拼寫錯誤):定時指令

作爲的一部分我正在編碼的項目,我需要一些命令。更具體地說:我有2套命令(讓我們稱它們爲A和B) - 我需要執行A組,然後等待特定的毫秒數(在A組中計算),然後執行B組。它在集合之間使用Sleep(時間)命令。

現在,我需要包含另一組命令(Set C),它們將在集合A和B之間的時間循環中運行,而不是簡單地不做任何事情。意思是,而不是程序之前閒置的時間(等待指定的毫秒數),我需要它循環C集 - ,但趕上它是循環C 正好它同時它會在空閒時間等待。

如何在不使用線程的情況下執行此操作? (並且通常儘可能簡單)

+0

對不起,但也許唯一的辦法就是使用線程。 –

+0

你確定嗎?有沒有辦法在c + +中循環(下降到毫秒)? – TeaHoney

回答

1

我猜測C語言中的命令集的「工作時間」是已知的。而C是一個循環,當等待時間到期時可以完成。

在這種情況下,我建議使用performance counter倒計時等待時間。根據計算的結果以及在C中引入了什麼樣的overhaed,獲得的精度可以在微秒範圍內。

僞代碼:

Delay = 1000 
Do A 
CounterBegin = GetCounter() 
// and now the C loop 
while ((GetCounter() - CounterBegin) < Delay) { 
    Do C 
} 
Do B 

注:計數器值是通過使用計數器頻率被轉換成次。請參閱上面的鏈接以獲取詳細信息。

+0

謝謝!這正是我需要的! (= – TeaHoney