使用时间间隔更新对象

本文关键字:更新 对象 时间 | 更新日期: 2023-09-27 18:24:10

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

我有一个对象,必须在预设的时间段内刷新(时间由用户指定)。物体的数量很可能达到1000个左右,甚至更多。

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

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

===或===

有一个只运行计时器的计时器线程,每一次滴答声的数量达到其倍数(10分钟、5分钟等),它就会调用具有该倍数的对象并设置刷新标志,当数据包进入时,刷新这些标志。

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

使用时间间隔更新对象

我会避免为每个对象添加计时器。也许您可以有一个单独的线程,负责启动对象的更新。如果你认为这不会导致并发问题,你可以使用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);
    }
}