GetTickCount()是否包括暂停或休眠的时间?

时间:2009-02-04 20:15:52

标签: winapi

澄清一下,我指的是系统暂停/休眠所花费的时间,而不是调用线程(GetTickCount()返回自系统启动以来的毫秒数。)

6 个答案:

答案 0 :(得分:5)

据我所知,GetTickCount与线程无关,并计算自系统启动以来的时间。但最好使用GetTickCount64来避免49.7天的角色转换。

顺便说一下,为了获得你想要的东西,你需要GetThreadTimes功能。它记录了创建和退出时间以及线程在用户或内核空间中花费的时间。所以你有一个很好的方法来计算花费的时间。

好的,我错过了问题的“系统”部分。但这很简单。休眠时,GetTickCount继续计数。因为人们在大多数时间计算机处于休眠状态时都遇到了49.7天的错误。有关详细信息,请参阅此处link text

答案 1 :(得分:5)

简短回答:是的。

更长的答案:阅读GetTickCount()文档:这是自系统启动以来的 已过去 时间,甚至MS也不会建议您的时间静止不动电脑正在休眠......

答案 2 :(得分:2)

是的,GetTickCount确实包含暂停/休眠时间。

在下面的python脚本中,我调用Sleep API等待40秒让我有机会将计算机置于休眠模式,然后打印前后的时间,以及之后的滴答计数差异。

import win32api
import time
print time.strftime("%H:%M:%S", time.localtime())
before = win32api.GetTickCount()
print "sleep"
win32api.Sleep(40000)
print time.strftime("%H:%M:%S", time.localtime())
print str(win32api.GetTickCount()-before)

输出:

17:44:08
sleep
17:51:30
442297

如果GetTickCount在休眠期间没有包含时间,那么它将比我休眠的时间少得多,但它与实际经过的时间相匹配(7分22秒等于442秒,即442000毫秒“滴答”)。

答案 3 :(得分:2)

对于任何在Windows CE平台下寻找答案的人,来自docs:

http://msdn.microsoft.com/en-us/library/ms885645.aspx

你可以阅读:

  

对于Release配置,此函数返回的数量   自设备启动以来的毫秒数, 排除任何时间   系统已暂停 。 GetTickCount在启动时从0开始,然后计数   从那里开始。

答案 4 :(得分:0)

GetTickCount()为您提供自计算机启动以来的毫秒时间。它与调用它的过程无关。

答案 5 :(得分:-3)

不,GetTickCount()不包括系统在休眠期间花费的时间。 一个简单的测试证明了这一点。

Python中的

import win32api
win32api.GetTickCount()

- 做休眠 -

win32api.GetTickCount()

你会看到结果......