2013-06-24 70 views
-1

我想我的程序顯示一個隨機數10秒;我可以生成號碼,但計時器不適合我!什麼功能用於等待?

我曾嘗試使用此代碼:

void MemoryGame::sleep(unsigned int mseconds) 
{ 
    clock_t goal = mseconds + clock(); 

    while (goal > clock()); 
} 

... 
sleep(500); 

是不是clock()這裏正確的功能?還是我忽略了別的東西?

+4

_「對我不起作用」_不是對問題的很好描述。究竟是什麼不起作用? –

+1

不完全確定你要做什麼,但是'sleep()'應該在'while'循環中? – FeifanZ

+1

'clock()'的輸出不一定要以毫秒爲單位。將clock()的輸出與秒進行比較時,總是使用'CLOCKS_PER_SEC'宏。 –

回答

3

我遇到的每個操作系統都提供了睡眠。爲什麼不在給定的毫秒數內使用操作系統?你的CPU會感謝你不要無所事事。

+0

使用操作系統本地非忙等待,是不是這正是睡眠標準C函數呢?堅持使用該語言並避免使用特定的功能,除非您確實需要。 –

+0

C中沒有本地睡眠函數,除非已經在C++ 11中添加(我沒有真正看過多處理函數庫)。您提到的睡眠可能是POSIX,它在Windows上不可用。你必須使用睡眠。 – Joel

3

如果你想睡覺的秒數(10?),POSIX提供了sleep(unsigned int seconds)功能。要在指定的時間間隔內睡眠一段時間,usleep函數提供了此功能。

功能駐留在#include <unistd.h>,和大多數操作系統:是你應該能夠例如鍵入man 3 sleep獲得一些幫助。

在Windows端,有Sleep(DWORD milliseconds)功能。

不要忙等待(例如while(t<t1);),除非你有一個非常特殊的需要這樣做。

+3

即使是實時系統提供的選項也比繁忙的等待更好。 – Joel

+1

這可能會告訴你我上次做任何事情都是實時的,我在PIC16C84上編程機器人回到大學:)無論如何,更新了答案。 – Krumelur