【问题标题】:Updating an object with time intervals使用时间间隔更新对象
【发布时间】:2013-07-19 07:08:53
【问题描述】:

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

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

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

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

==或==

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

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

【问题讨论】:

    标签: c# multithreading timer refresh


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多