私はマルチスレッドが初めてで、アプリケーションの領域を並列化することに取り組んでいます。私はこのサイトで多くの投稿を読みましたが、私の問題に取り組む最善の方法についてまだ混乱しています:
[1] .NET 3.5 ではThreadPool
、プログラムがマシンのマルチコアを活用する唯一の方法はありますか? つまり、を使用して異なるコアでスレッドを生成することは可能new Thread()
ですか?
[2] 私の場合:List<Calculation>
約 80 個のアイテムが含まれており、現在順次処理されています。したがって、私が.NET 3.5を使用していて、私が読んだことに基づいていることを考えるとThreadPool
、スレッド数が多いため、おそらくマルチスレッドの最善の策です。
- 計算の間には多くの依存関係があります。現在、リストは、必要なすべての計算が最初に実行されるように並べられています。
これは、作業項目の依存関係がどのように見えるかです (詳細は重要ではなく、依存関係の複雑さを指摘したかっただけです):
- 計算時間は大きく異なります.1つのCalculationオブジェクトは値の取得のみを伴う場合があり、他のCalculationオブジェクトはネストされたループで多くの作業を伴う場合があります...など
Calculations
それに依存する10以上の他の作業項目のようなものを持つメインに優先順位を付けるにはどうすればよいですか? 使用するシグナリングの最も効率的な方法は何ですか?
ありがとうございました。
List<Calculation>
編集:修正されたままであることを言及する必要があります。ただし、80回以上の計算を計算すると、x百万回と呼ばれます。イテレータが更新されるたびCalculation
に、リスト内のすべてで Calculate() が呼び出されます。