我想使用3或4 C# Timers,间隔可能是40ms(使用图像数据1000/25 = 40)。
根据MSDN,似乎是每40ms执行一次任务的好模式。默认间隔为100毫秒。
在现实生活中,我想知道40ms是否仍然存在?或者如果我应该使用另一种线程设计模式?唤醒/睡眠行为是否接近cpu免费?
答案 0 :(得分:1)
与100毫秒默认值没有特别关联,您可以根据需要进行更改。
如果您想获得从一台机器到另一台机器的一致间隔,您需要仔细选择您的值。 Timer类的精度受默认操作系统时钟中断率的影响。在大多数Windows机器上,该中断每秒发生64次。等于15.625毫秒。有些机器的速率较高,有些则低至1毫秒。改变中断率的其他程序的副作用。 timeBeginPeriod()winapi函数执行此操作并具有全局效果。
所以选择的最佳时间间隔是15.625的倍数,并保持低于该值。因此,您选择的间隔可以在任何机器上重复使用。这是很好的选择:
因此,瞄准近40毫秒的最佳选择是46。任何机器都可以准确达到1.4%。我总是挑选45个自己,很好的数字。
请注意,如果计算机负载过重或者程序中有很多活动的线程池线程,实际的时间间隔可以更长。