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