0

作業を複数のスレッドに分散するアプリケーションがあります。1 つのスレッドで CPU 負荷がかかりすぎて、他のすべてのスレッドが影響を受ける場合があります。1 つのスレッドが CPU を使用して上昇している場合に一時停止するか、スライスしてすべてのスレッドの負荷が多かれ少なかれ均等になるようにスレッドを管理するにはどうすればよいでしょうか。

更新された私のタスクは独立しています。各スレッドにパフォーマンス カウンターを追加して負荷を測定できるかどうかは不明です。スレッドが制限を超えた場合は、後で一時停止します。

TPL 負荷分散の使用に関する更新済みの問題は、スレッドが STA であることです。一種の解決策は、「ラウンドロビン負荷分散」などのよく知られたアルゴリズムに従って、自作の負荷分散を作成することです。

4

1 に答える 1

2

作業を複数のスレッドに分散するとおっしゃっています。したがって、作業を適切に分解して配布するのはあなた次第です。ワークロードを見て、そのワークロードが必要とするリソースの量を判断できるように、コードのパフォーマンスを十分に理解する必要があります。次に、ワークロードを分割して、各作業単位がリソースに関してほぼ同じになるようにします。

完全な魔法の解決策を見つけることはできないと思います。Task Parallel Library i .NET 4.0 以降のようなものが役に立ちますが、特効薬ではありません。

于 2012-11-28T03:29:59.887 に答える