大量定时器是否会影响定时器触发?

时间:2009-10-07 07:59:57

标签: c# .net timer

如果我有大量的计时器(10到可能是几百)都使用< 100毫秒间隔,会影响其中任何一个的发射吗?

4 个答案:

答案 0 :(得分:3)

逻辑上,不,但实际上我认为你可能会发现它们的性能受到物理CPU限制的限制。

我怀疑你可能想重新审视你的设计。

答案 1 :(得分:2)

会的,但我不知道你是否会看到它。

如果你有一台1GHz的机器。然后一个时钟滴答是1纳秒(1 / 1.000.000.000)。让我们说定时器设置需要10个时钟滴答(可能需要更多,但只是一个思想实验)。然后100个计时器设置将花费1微秒。

但是还有许多其他变量需要考虑一个真实的例子,但这应该可以帮助你了解正在发生的事情。

答案 2 :(得分:1)

您使用的是什么Timer类?许多标准定时器的分辨率并不高,并且它们可能不应该用于小于100 ms的间隔。有关更高分辨率计时器的示例,请参阅here

如前所述,您应该重新考虑您的设计,因为有10或100个计时器不必要地复杂化并浪费资源。单个高分辨率1 ms定时器可用于计算1 ms以上的任何间隔 - 只计算定时器触发的次数。如果要跟踪多个间隔,则使用具有多个计数的1 ms计时器,每个间隔一个。因此,对于100 ms的间隔,当计时器计数达到100时,间隔已经过去(然后您需要将此计数重置为0)。

答案 3 :(得分:0)

首先,它在很大程度上取决于您使用的是System.Timers.Timer还是System.Windows.Forms.Timer

Windows计时器将全部在主线程中运行,因此在previos完成之前,一个处理程序无法启动。计时器永远不能保证在所需的时间准确启动,但如果你有很多计时器,它们会相互影响。

由于处理程序在单独的线程中启动,因此线程计时器的感知性较差,但处理器仍然无法同时运行更多线程,因此它们可能仍然会相互影响。