GetTickCount()函数的陷阱!
生活随笔
收集整理的這篇文章主要介紹了
GetTickCount()函数的陷阱!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開發中經經常使用GetTickCount()函數來進行間隔時間的推斷。如推斷某一段代碼運行花了多少時間等,使用比較方便。
可是僅僅針對尋常的一些測試。近期開發一個服務程序時,也在代碼中用GetTickCount()來進行推斷,大體格式例如以下:
DWORD dwBegin = 0;
void Thread_Run(void)
{
while(TRUE)
{
DWORD dwNow = GetTickCount();
if (dwNow - dwBegin > 30) //second
{
....//
dwBegin = dwNow;
}
}
}
問題來了,GetTickCount()返回的是DWORD類型,返回的值代表程序從啟動到如今走過的時間。
DWORD類型的最大值為4294967295,折算成天是49.7。也就是說當服務程序連續跑了50天之后,再調用GetTickCount()的時候就會發生溢出。所以服務程序盡量不要用GetTickCount()。
假設要推斷間隔時間能夠用1970年以來的秒數差來計算。
總結
以上是生活随笔為你收集整理的GetTickCount()函数的陷阱!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Beta冲刺博客集合贴
- 下一篇: android studio 65536