看似简单的问题,关于GetTickCount的准确性!

yuanreid 2009-09-21 04:16:15
我有一个客户端获取网络时间(37端口)的程序,为了减少客户端访问网络主机的数量又不修改客户端的系统时间,我设计了一个机制可以自己计算网络主机的时间。
原理是:客户端应用在每次启动的时候,从网络主机37端口获取时间,同时将当时客户端系统的TickCount一同记录下来。在程序运行中,如果需要获取网络时间,通过将当前的TickCount减去系统启动时的TickCount,计算出时间差,通过时间差可以计算出当前的网络主机时间。

目前的问题是,系统运行几个小时后,通过TickCount差值计算出的时间,总是比实际的网络主机时间慢了几十秒。也就是说,GetTickCount并不准确,而且每次都是慢,而不是快。这个让我不禁联想到Timer的机制,难道GetTickCount在系统内部也是一个类似Timer的定时器?会因为CPU占用率、消息队列优先级等因素延迟?

有人能解释GetTickCount的这个问题吗?

如果使用QueryPerformanceFrequency,QueryPerformanceCounter是否能精确维护一个时钟,而不出现上述问题呢?
...全文
380 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2009-09-21
  • 打赏
  • 举报
回复
GetTickCount是软件实现的,肯定有时差
看一下以前我回过的,可能对你有帮助
http://topic.csdn.net/t/20040323/15/2875958.html
ydlchina 2009-09-21
  • 打赏
  • 举报
回复
总会有时间差吧,毕竟你应该统计的是过去某段时间内的情况。
vbcrack 2009-09-21
  • 打赏
  • 举报
回复
不懂,关注中…………

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧