1

これは提案を求めるものかもしれませんが、聞いてください。

事前設定された期間ごとに更新する必要があるオブジェクトがあります (時間はユーザーによって指定されます)。オブジェクトの数は、それ以上ではないにしても、おそらく 1000 前後に達するでしょう。

3 つの方法を思いついたので、特定の方法を使用した場合のパフォーマンスの問題を見つけたいと思います。

オブジェクトごとにタイマーを使用し、それにイベントを追加し、タイマーが特定の値に達したときにそのイベントを起動し、オブジェクトの状態を更新に設定し、次のデータパケットが入ってきたら、その特定のオブジェクトを更新することを考えました

==または==

タイマーを実行するだけのタイマー スレッドがあり、ティックの量がその乗数 (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 に答える