2013-07-19 61 views
1

這可能是更多的建議,但聽我說。用時間間隔更新對象

我有一個對象,必須刷新每個預設的時間段(時間由用戶指定)。如果不是更多,物體的數量最可能達到1000。

我想出了三種方法,我想找出使用​​某些方法的性能問題。

我想過爲每個對象使用一個計時器,向它添加事件,當計時器達到某個值時,觸發該事件,將對象的狀態設置爲刷新,以及下一個數據包何時進入,刷新某些對象

==或==

具有剛運行定時器的定時器線程,每蜱的量命中的所述乘法器(10分鐘,5分鐘等),它會調用具有該倍數的對象並設置刷新標誌,並在數據包進入時刷新這些標誌。

我不確定是否爲每個對象添加一個定時器是一個好主意,因爲負載。

回答

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); 
    } 
}