3 回答

TA貢獻1773條經(jīng)驗 獲得超3個贊
sleep()函數(shù)大概只能精確到50ms左右,你用sleep(10)是肯定不行的,如果你要精確的定時的話可以使用QueryPerformanceFrequency()函數(shù),用法為:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 獲得計數(shù)器的時鐘頻率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 獲得初始值
do
{
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//獲得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 獲得對應的時間值,單位為秒
}while(dfTim<0.001);
其定時誤差不超過1微秒,精度與CPU等機器配置有關(guān)。
×××××××××××××××××××××××××
sleep()函數(shù)的中等待時間是以毫秒計算的,所以等待1秒就是sleep(1000),如果要讓等待時間小于一秒,那么就讓傳入的參數(shù)小于1000就行了.
比如,等待0.1秒:
sleep(100);

TA貢獻2037條經(jīng)驗 獲得超6個贊
TC中sleep()函數(shù)原型為: unsigned sleep(unsigned seconds); 參數(shù)單位為秒
delay()函數(shù)原型為: unsigned sleep(unsigned seconds); 參數(shù)單位為毫秒
函數(shù)sleep()確實會暫停x秒,但delay()多數(shù)情況下不精確,可以不斷修正設(shè)置的數(shù)值,來達到控制時間的目的。

TA貢獻1921條經(jīng)驗 獲得超9個贊
#include <unistd.h> // 頭文件
int usleep(useconds_t usec); // 函數(shù)原型
usec -- 毫秒。整數(shù)。最大允許值:小于 1000000
返回 0 -- 表示調(diào)用執(zhí)行成功,1 -- 失敗。
- 3 回答
- 0 關(guān)注
- 870 瀏覽
添加回答
舉報