Sleep延迟不准确的问题(100分)

  • 主题发起人 DarwinZhang
  • 开始时间
to DarwinZhang:<br>至于原因吗tseug和我都说了,大体上就是sleep()函数执行需要时间,机器差的需要的<br>时间就长一些...
 
to 张无忌:<br>&nbsp; "我的意思是,为什么它很“精确”的固定在10ms档上面,而不是说它准不准的问题。"<br>
 
原因是:<br>&gt;&gt;tseug:<br>&gt;&gt;好像是NT没个任务最小的时间片是1/120m, 大约是8.3ms, 因为Sleep要切换任务, <br>&gt;&gt;所以估计是这个原因<br>还有那本《DELPHI深度历险》有这个问题的讨论,看看就知道了
 
to 张无忌:“好像是NT没个任务最小的时间片是1/120m, 大约是8.3ms, 因为Sleep要切换任务”<br>那么LiChaoHui兄和creation-zy兄的测试有说明了这个观点不成立。<br>而且可以看出,Win2K的切换算法似乎该进了!<br>所以深度历险的说法也不一定就正确啊!
 
不要随便使用 Sleep 函数。该函数可能在某些计算机上引起错误,而在其它<br>某些计算机上则不会。
 
是这样,Sleep不要在关键的程序中使用<br>
 
大家有没有注意,对于定时器,在Win2k和Win98中的精度也是不一样的啊<br>Win98的频率最高只能达到18.2<br>但是Win2k却能高得多
 
to LiChaoHui 兄:<br>&nbsp; &nbsp;我以为现在主要是对windows的机制不太明白,还得去学习学习。
 
我记得看过相关资料说GetTickCount,Sleep,等等Windows(NT下,98更差)的精度都是10-11ms
 
shenloqi: 您的资料上不准确,我以试验为准。
 
用WaitForSingleObject(),精确到毫秒。
 
to zw84611: <br>&nbsp;WaitForSingleObject 也不是太理想,<br>现在的关键问题是[red]为什么[/red],而不是来想如何延迟。<br>如何精确延迟我已经有办法了。谢谢。[:)]
 
to darwinzhang:<br>本来WINDOWS就是不是实时系统。。。
 
to 张无忌:<br>&nbsp; &nbsp;不是实时系统不错,但是它能居然很准确的定在10ms,你说这可疑不可疑?
 
10MS可能就是WINDOWS的最小误差了,
 
呵呵,用过多媒体定时器吗?
 
唉,说了无数次,总是要从说。<br>我这里的sleep是10ms的倍数,但是另外一些人却是不一样的,比如13的倍数,<br>或者比较接近于1ms的倍数等等。<br>这个差异是怎么回事?<br>过几天没人理会就结了算了。[:(]
 
先告一段落吧。[:(]
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
627
import
I
S
回复
0
查看
823
SUNSTONE的Delphi笔记
S
顶部