GetTickCount是一種函式。GetTickCount返回(retrieve)從作業系統啟動所經過(elapsed)的毫秒數,它的返回值是DWORD。
基本介紹
- 外文名:GetTickCount
- 類別:程式函式
- 特點:精準度高等
- 函式原型::DWORD GetTickCount(void);
函式,程式示例,注意事項,
函式
函式原型:
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<<se<<endl;
庫檔案:kernel32.dll
C/C++頭檔案:winbase.h
windows程式設計中可以使用頭檔案windows.h
程式示例
//代替time函式來初始化隨機數生成器
#include <iostream>
#include <windows.h>
#include <WinBase.h>
#include <ctime>
using namespace std;
int main()
{
int i, k, r;
for (i = 0; i < 10; i++)
{
srand (GetTickCount());
cout<<endl;
for (k = 0; k < 5; k++)
{
r = rand ();
cout<<r<<endl;
}
}
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之間波動。