GetTickCount 函式的陷阱!

2021-09-08 04:38:56 字數 459 閱讀 1533

開發中經經常使用gettickcount()函式來進行間隔時間的推斷。如推斷某一段**執行花了多少時間等,使用比較方便。

可是僅僅針對尋常的一些測試。近期開發乙個服務程式時,也在**中用gettickcount()來進行推斷,大體格式例如以下:

dword dwbegin = 0;

void thread_run(void)

}}

問題來了,gettickcount()返回的是dword型別,返回的值代表程式從啟動到如今走過的時間。

dword型別的最大值為

4294967295,折算成天是49.7。也就是說當服務程式連續跑了50天之後,再呼叫gettickcount()的時候就會發生溢位。所以服務程式盡量不要用gettickcount()。

假設要推斷間隔時間能夠用2023年以來的秒數差來計算。

GetTickCount 函式的作用和用法

csdn老帖 http topic.csdn.net t 20050107 12 3706743.html 1 一般用作定時相關的操作。gettickcount 返回開機以來經過的毫秒數 2 在要求誤差不大於1毫秒的情況下,可以採用gettickcount 函式,該函式的返回值是dword型,表示以...

GetTickCount 函式的作用和用法

start gettickcount 執行耗時的操作 stop gettickcount timeused stop start 1000 使用了 秒 用來定時 void main getchar return 對於一般的實時控制,使用gettickcount 函式就可以滿足精度要求,但要進一步提高...

規避GetTickCount越界問題

程式中經常性的需要獲取系統執行毫秒值來進行計算或者判斷。但是 gettickcount獲取的毫秒值可能在電腦連續執行二三十天以後產生越界現象。為了規避這種現象,使用獲取程式執行毫秒值來代替系統執行毫秒值 下面 是抄襲我 做個備忘。標頭檔案 ifndef get cpu time h define g...