繁体   English   中英

GetTickCount函数

[英]GetTickCount function

我有一个关于GetTickCount函数的问题,我在代码中有两个对此函数的调用,它们之间有多个命令,两个调用中的函数返回相同的计数。

var1 = GetTickCount();
code
:
:
var2 = GetTickCount();

var1和var2具有相同的值。

有人可以帮忙吗?

假设这是Windows GetTickCount调用,那是完全合理的:

GetTickCount函数的分辨率限于系统计时器的分辨率,通常在10毫秒到16毫秒的范围内。

请注意,开始时仅以毫秒为单位-这些天您可以在毫秒内完成很多工作。

文档继续说:

如果需要更高分辨率的计时器,请使用多媒体计时器高分辨率计时器

也许QueryPerformanceCounter会更合适?

如果您指的是Windows API调用,请阅读此内容 我猜想您正在尝试安排较短的时间间隔,因此本段很重要。 您的计时时间是否短于该间隔? 如果是这样的话,也许应该去查询QueryPerformanceCounter。

GetTickCount函数的分辨率限于系统计时器的分辨率,通常在10毫秒到16毫秒的范围内。 GetTickCount函数的分辨率不受GetSystemTimeAdjustment函数所做的调整的影响。

如果您使用QueryPerformanceCounter路由,则需要当心与硬件相关的问题 已经有一段时间了,所以我不知道这种事情是否还会发生。

您可能还想看一下此链接,因为它有一个不错的示例应用程序,可以比较QueryPerformanceCounter,GetTickCount和TimeGetTime。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM