[英]GetTickCount function
我有一个关于GetTickCount函数的问题,我在代码中有两个对此函数的调用,它们之间有多个命令,两个调用中的函数返回相同的计数。 即
var1 = GetTickCount();
code
:
:
var2 = GetTickCount();
var1和var2具有相同的值。
有人可以帮忙吗?
假设这是Windows GetTickCount调用,那是完全合理的:
GetTickCount函数的分辨率限于系统计时器的分辨率,通常在10毫秒到16毫秒的范围内。
请注意,开始时仅以毫秒为单位-这些天您可以在毫秒内完成很多工作。
文档继续说:
也许QueryPerformanceCounter
会更合适?
如果您指的是Windows API调用,请阅读此内容 。 我猜想您正在尝试安排较短的时间间隔,因此本段很重要。 您的计时时间是否短于该间隔? 如果是这样的话,也许应该去查询QueryPerformanceCounter。
GetTickCount函数的分辨率限于系统计时器的分辨率,通常在10毫秒到16毫秒的范围内。 GetTickCount函数的分辨率不受GetSystemTimeAdjustment函数所做的调整的影响。
从MSDN
GetTickCount函数的分辨率限于系统计时器的分辨率,通常在10毫秒到16毫秒的范围内。 GetTickCount函数的分辨率不受GetSystemTimeAdjustment函数所做的调整的影响。
经过的时间存储为DWORD值。 因此,如果系统连续运行49.7天,则时间将归零。 为避免此问题,请使用GetTickCount64函数。 否则,在比较时间时检查溢出情况。
如果需要更高分辨率的计时器,请使用多媒体计时器或高分辨率计时器。
GetTickCount的分辨率为一毫秒(实际上,它是几毫秒)。 您之间调用的函数花费的时间可能少于1毫秒。
dwStartTimer=GetTickCount();
dwEndTimer=GetTickCount();
while((dwEndTimer-dwStartTimer)<wDelay)//5000 milli seconds delay
{
Sleep(200);
dwEndTimer=GetTickCount();
if (PeekMessage (&uMsg, NULL, 0, 0, PM_REMOVE) > 0) //Or use an if statement
{
TranslateMessage (&uMsg);
DispatchMessage (&uMsg);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.