我想我的程序顯示一個隨機數10秒;我可以生成號碼,但計時器不適合我!什麼功能用於等待?
我曾嘗試使用此代碼:
void MemoryGame::sleep(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}
...
sleep(500);
是不是clock()
這裏正確的功能?還是我忽略了別的東西?
我想我的程序顯示一個隨機數10秒;我可以生成號碼,但計時器不適合我!什麼功能用於等待?
我曾嘗試使用此代碼:
void MemoryGame::sleep(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}
...
sleep(500);
是不是clock()
這裏正確的功能?還是我忽略了別的東西?
我遇到的每個操作系統都提供了睡眠。爲什麼不在給定的毫秒數內使用操作系統?你的CPU會感謝你不要無所事事。
使用操作系統本地非忙等待,是不是這正是睡眠標準C函數呢?堅持使用該語言並避免使用特定的功能,除非您確實需要。 –
C中沒有本地睡眠函數,除非已經在C++ 11中添加(我沒有真正看過多處理函數庫)。您提到的睡眠可能是POSIX,它在Windows上不可用。你必須使用睡眠。 – Joel
如果你想睡覺的秒數(10?),POSIX提供了sleep(unsigned int seconds)
功能。要在指定的時間間隔內睡眠一段時間,usleep
函數提供了此功能。
功能駐留在#include <unistd.h>
,和大多數操作系統:是你應該能夠例如鍵入man 3 sleep
獲得一些幫助。
在Windows端,有Sleep(DWORD milliseconds)功能。
不要忙等待(例如while(t<t1);
),除非你有一個非常特殊的需要這樣做。
_「對我不起作用」_不是對問題的很好描述。究竟是什麼不起作用? –
不完全確定你要做什麼,但是'sleep()'應該在'while'循環中? – FeifanZ
'clock()'的輸出不一定要以毫秒爲單位。將clock()的輸出與秒進行比較時,總是使用'CLOCKS_PER_SEC'宏。 –