C#Timer.Interval模式有40ms吗?

时间:2013-08-07 22:40:37

标签: c# multithreading image-processing

我想使用3或4 C# Timers,间隔可能是40ms(使用图像数据1000/25 = 40)。

根据MSDN,似乎是每40ms执行一次任务的好模式。默认间隔为100毫秒。

在现实生活中,我想知道40ms是否仍然存在?或者如果我应该使用另一种线程设计模式?唤醒/睡眠行为是否接近cpu免费?

1 个答案:

答案 0 :(得分:1)

与100毫秒默认值没有特别关联,您可以根据需要进行更改。

如果您想获得从一台机器到另一台机器的一致间隔,您需要仔细选择您的值。 Timer类的精度受默认操作系统时钟中断率的影响。在大多数Windows机器上,该中断每秒发生64次。等于15.625毫秒。有些机器的速率较高,有些则低至1毫秒。改变中断率的其他程序的副作用。 timeBeginPeriod()winapi函数执行此操作并具有全局效果。

所以选择的最佳时间间隔是15.625的倍数,并保持低于该值。因此,您选择的间隔可以在任何机器上重复使用。这是很好的选择:

  • 15
  • 31
  • 46
  • 62

因此,瞄准近40毫秒的最佳选择是46。任何机器都可以准确达到1.4%。我总是挑选45个自己,很好的数字。

请注意,如果计算机负载过重或者程序中有很多活动的线程池线程,实际的时间间隔可以更长。