GetTickCount

計算機程序函數

GetTickCount是一種函數。GetTickCount返回(retrieve)從操作系統啟動所經過(elapsed)的毫秒數,它的返回值是DWORD

函數


函數原型:
DWORD GetTickCount(void);
VB版
VB聲明:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
例如:實現延時
Public Sub Sleep(numa As Long)
Dim num1 As Long
Dim num2 As Long
Dim numb As Long
numb = 0
num1 = GetTickCount
Do While numa - numb > 0
num2 = GetTickCount
numb = num2 - num1
DoEvents
Loop
End Sub
C++版
DWORD k=::GetTickCount(); //獲取毫秒級數目
int se = k/1000; // se為秒
cout<
庫文件:kernel32.dll
C/C++頭文件:winbase.h
windows程序設計中可以使用頭文件windows.h

程序示例


//代替time函數來初始化隨機數生成器
#include
#include
#include
#include
using namespace std;
int main()
{
int i, k, r;
for (i = 0; i < 10; i++)
{
srand (GetTickCount());
cout<
for (k = 0; k < 5; k++)
{
r = rand ();
cout<
}
}
return 0;
}

注意事項


GetTickcount函數:它返回從操作系統啟動到當前所經過的毫秒數,常常用來判斷某個方法執行的時間,其函數原型是DWORD GetTickCount(void),返回值以32位的雙字類型DWORD存儲,因此可以存儲的最大值是(2^32-1) ms約為49.71天,因此若系統運行時間超過49.71天時,這個數就會歸0,MSDN中也明確的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。因此,如果是編寫伺服器端程序,此處一定要萬分注意,避免引起意外的狀況(如需避免此種情況可使用Ctime類或者是系統API的SYSTEMTIME進行判斷)。
特別注意:這個函數並非實時發送,而是由系統每18ms發送一次,因此其最小精度為18ms。當需要有小於18ms的精度計算時,應使用StopWatch方法進行。
* 連續觸發200次,實測下來,最小間隔在15ms。
* 實際狀況應該是系統每秒觸發64次,間隔在15、16ms之間波動。
  • 目錄