我一直在研究斯坦福大學的CS106B課程,在完成Boggle任務時,我注意到Windows上的Sleep()函數與Pause()函數的行爲不同。出於測試目的,我只是簡單地設置了電路板並使用提供的gboggle.h文件突出顯示了Boggle多維數據集,然後刪除突出顯示。以下是相關的代碼:C++中的Pause(),Sleep()和Wait()之間的區別是什麼?
for(int row = 0; row < board.numRows(); row++)
{
for(int col = 0; col < board.numCols(); col++)
{
HighlightCube(row, col, true);
}
}
Pause(0.5);
for(int row = 0; row < board.numRows(); row++)
{
for(int col = 0; col < board.numCols(); col++)
{
HighlightCube(row, col, false);
}
}
如果我使用Pause(),立方體突出顯示,然後恢復正常。如果我使用Sleep()或Wait(),則多維數據集永遠不會突出顯示,並且程序中的延遲發生在板被繪製之前,而不是在for循環之間。相關的Wait()函數:
void wait (int seconds)
{
clock_t endwait;
endwait = clock() + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}
取自here。我在Windows XP上使用Visual Studio 2005。
這些函數之間的區別是什麼導致它們以這種方式進行操作?
編輯:我知道睡眠和等待需要整數。我用整數測試了它們,看到了延遲,但它在方塊寫入之前發生。對不起,我以前不清楚。編輯2:在查看我使用過的其他一些庫後,我發現暫停實際上是圖形庫的一部分,它只是暫停圖形緩衝區。
什麼暫停你想要?在win32 API中沒有稱爲暫停的功能。 – ronag 2011-05-14 22:55:30
在C++中沒有叫'暫停','睡眠'或'等待'的函數。這些是特定於MS Windows的。所以我添加了關鍵詞來反映這個事實,現在我不必看這個問題。 :-) – Omnifarious 2011-05-14 23:01:03
對於暫停命令,我在其他人的代碼中看到了它,對其進行了測試,並發現它的工作原理。 – acmshar 2011-05-15 01:44:51