1

这可能更多的是征求建议,但请听我说。

我有一个必须在每个预设时间段(时间由用户指定)刷新的对象。对象的数量很可能会达到大约 1000 个,如果不是更多的话。

我想出了三种方法,我想找出使用​​某些方法的性能问题。

我想为每个对象使用一个计时器,向它添加和事件,当计时器达到某个值时,触发该事件,将对象的状态设置为刷新,当下一个数据包进入时,刷新该特定对象

==或==

有一个只运行计时器的计时器线程,并且每个滴答数都达到乘数(10 分钟、5 分钟等),它会调用具有该倍数的对象并设置刷新标志,以及当数据包进来,刷新那些。

由于负载,我不确定向每个对象添加计时器是否是一个好主意。

4

1 回答 1

0

我会避免为每个对象添加一个计时器。也许您可以有一个单独的线程来负责启动对象的更新。如果您认为这不会导致并发问题,您可以使用Parallel.ForEach对您的所有服务器运行并发更新。例如,类似:

Thread updateThread = new Thread(updateLoop);
IEnumerable<Updateable> _updateableObjects;
public static void Main()
{
    updateThread.Start();
} 

private static function UpdateLoop()
{
    while (true)
    {
        Parallel.ForEach(_updateableObjects, obj => obj.Update());
        Thread.Sleep(1000);
    }
}
于 2013-07-19T21:22:30.360 回答