我们可以用QueryPerformanceCounter实现一个高精度timer:QueryPerformanceCounter c
while(true)
QueryPerformanceCounter c1
If c1 - c >= delay Then
QueryPerformanceCounter c
Call timer
End If
DoEvents
wend但是这样的问题是cpu占用100%... 如果在循环里加上sleep(1)就能降低cpu占用 但是sleep的精度太低
sleep(1)大概sleep了16ms...
怎样才能在保证精度2ms的情况下降低cpu占用呢? 难道只能用多媒体定时器? 用QueryPerformanceCounter不行吗?
while(true)
QueryPerformanceCounter c1
If c1 - c >= delay Then
QueryPerformanceCounter c
Call timer
End If
DoEvents
wend但是这样的问题是cpu占用100%... 如果在循环里加上sleep(1)就能降低cpu占用 但是sleep的精度太低
sleep(1)大概sleep了16ms...
怎样才能在保证精度2ms的情况下降低cpu占用呢? 难道只能用多媒体定时器? 用QueryPerformanceCounter不行吗?
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}或试试在doevents的后面加上一个sleep(1)试试,windows不是实时系统,这种精度的时差在应用层本来就是个难题。
timeGetDevCaps timeBeginPeriod timeEndPeriod 可以设置精度 sleep能精确到1ms~~~
谢谢大家~~