那位高手知道如何在c/c++下,实现微秒级的精确计时???,知道原码下载的也可以!!!

fangqiangqiang_0 2002-07-27 08:59:03
我要在c/c++环境下,要实现微秒的精确计时,delay(),Sleep()
都不能实现该功能,请教高手!!!!
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ixMind 2002-07-27
  • 打赏
  • 举报
回复
高精度计时一般都要用操作系统调用来实现吧
在WINDOWS下可以用QueryPerfomanceFrequency()QueryPerfomanceCounter()
也可以用timeSetEvent...系列的多媒体计时器API
Greaitm 2002-07-27
  • 打赏
  • 举报
回复
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime )
stkman 2002-07-27
  • 打赏
  • 举报
回复
《com+编程指南》中有个例子,用QueryPerfomanceFrequency()QueryPerfomanceCounter()实现的,可以从www.osborne.com上下载源代码
shuizhongtu 2002-07-27
  • 打赏
  • 举报
回复
delay,sleep,当然都不行了,它们顶多就是ms级的
你可以使用QueryPerfomanceFrequency()(得到高精度计时器的频率:一般是1193180Hz),再用QueryPerfomanceCounter()得到计数个数;剩下的就好办了:时间=计数个数/频率。更具体的用法,你可以参看msdn帮助。
GoogleGeek 2002-07-27
  • 打赏
  • 举报
回复
一般的时间控制函数:
vc程序员都会利用windows的WM_TIMER消息映射来进行简单的时间控制
1、调用函数SetTimer() 函数设置时间间隔
2、在应用程序中增加定时响应函数OnTimer()并且在该函数中添加相应的处理语句。
这种定时的方法比较简单,但是其定时功能于Sleep()函数的延时功能一样,精度很低,只能用来显示诸如位图的动态显示等对定时的精度要求不高的情况。

精度时间控制函数
在误差要求不大于一毫秒的情况下,可以采用GetTickCount()函数来计时。该函数的返回值时DWORD型,标识以毫秒为单位的计算机清洞后经历的时间间隔。
DWORD dwStart ,dwStop ;
//设置起始值和终止值
dwStop = GetTickCount();

  while(TRUE)
  {
dwStart = dwStop;
  // 上一次的终止值变成新的起始值
  // 此处添加相应控制语句
   do
   {
dwStop = GetTickCount();
   }while(dwStop - 50 < dwStart);
  }

高精度时间控制函数:
对于一般的实时控制,是用函数GetTickCount()可以满足精度的要求,但是要进一步的提高计时的精度,就要调用QueryPerfoemanceFrequency()函数QueryPerformanceCounter()函数。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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