我要在c/c++环境下,要实现微秒的精确计时,delay(),Sleep()
都不能实现该功能,请教高手!!!!

解决方案 »

  1.   

    一般的时间控制函数:
     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()函数。
      

  2.   

    delay,sleep,当然都不行了,它们顶多就是ms级的
    你可以使用QueryPerfomanceFrequency()(得到高精度计时器的频率:一般是1193180Hz),再用QueryPerfomanceCounter()得到计数个数;剩下的就好办了:时间=计数个数/频率。更具体的用法,你可以参看msdn帮助。
      

  3.   

    《com+编程指南》中有个例子,用QueryPerfomanceFrequency()QueryPerfomanceCounter()实现的,可以从www.osborne.com上下载源代码
      

  4.   

    VOID GetSystemTime(
      LPSYSTEMTIME lpSystemTime )
      

  5.   

    高精度计时一般都要用操作系统调用来实现吧
    在WINDOWS下可以用QueryPerfomanceFrequency()QueryPerfomanceCounter()
    也可以用timeSetEvent...系列的多媒体计时器API