回覆列表
  • 1 # 使用者2681768447859

    用Sleep ,Timer 定時器都不精確,誤差太大。

    想要精確計時,在WINDOW下可使用

    BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

    BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount);

    兩個函式。LARGE_INTEGER 是64位整型。

    第一個函式獲取計算機的時鐘頻率(次/秒),第二個函式獲取時鐘計數。呼叫兩次計算差值可求出兩次間間隔的時鐘計數,除以頻率可得時間差。精確到微秒。

    給你個函式吧,引數是在延時的時長,單位秒,WINDOWs環境下,C語言實現的。

    定時10ms 可用 Delay( 0.01 );

    延時1s, Delay(1.0);

    void Delay( double t )

    {

    LARGE_INTEGER litmp;

    LONGLONG QPart1,QPart2;

    double dfMinus, dfFreq, dfTim;

    QueryPerformanceFrequency(&litmp);

    dfFreq = (double)litmp.QuadPart;// 獲得計數器的時鐘頻率

    QueryPerformanceCounter(&litmp);

    QPart1 = litmp.QuadPart;// 獲得初始值

    do

    {

    QueryPerformanceCounter(&litmp);

    QPart2 = litmp.QuadPart;//獲得中止值

    dfMinus = (double)(QPart2-QPart1);

    dfTim = dfMinus / dfFreq;// 獲得對應的時間值,單位為秒

    }while(dfTim

  • 中秋節和大豐收的關聯?
  • 夢見老鼠掉進醬油桶裡是什麼意思?