2013-07-19 2 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); 
    } 
} 
관련 문제