挑戦。あなたのループが配列を進めるときに配列を変更すると、複数のスレッドに分割したときにうまく動作しません。入力データが読み取り専用で、ループの出力が別のデータ構造になるようにループを設定している場合は、マルチスレッドの可能性があります。読み取り専用の入力+ローカライズされた出力は、マルチスレッドに適しています。
各ループ反復でどれだけの作業が行われているかという問題もあります。反復処理がほとんど行われないループをマルチスレッド化することによるメリットはありません。小さな高速ループでのウォールクロック時間のほとんどは、作業自体ではなく、ループ管理に費やされます。ループをマルチスレッド化すると、ループ管理オーバーヘッドが増加します。あなたのループが反復ごとに些細な作業をしている場合は、マルチスレッドの利点を見るチャンスが増えます。
繰り返し処理ごとにファイルI/Oなどのブロック操作が含まれている場合は、ループをマルチスレッド化すると処理が改善されると考えられます。多くの場合、ファイルI/Oバウンドループをマルチスレッド化すると状況が悪化します。これらのファイルI/Oのもう一方の端にあるハードウェアデバイスは、通常、物理的な読み取り/書き込みヘッドをそれ以上速く動かすことができないため、同時に多くのことを行うように求めても何の効果もありません。ループをマルチスレッド化する前に、非同期ファイルI/Oを使用して調査する方がよいでしょう。
最後に、マルチスレッドが役立つかもしれない推測に基づいて、これを実行しないでください。マルチスレッドとそれ以降のコードのパフォーマンスを測定します。マルチスレッドが大幅に改善されている状況が見つからない場合は、それをしないでください。時にはわずかな改善が得られるだけの余計な努力とリスクはありません。
C#(a *言語*)には「スレッドループ」などの機能はありません。あなたが話していることの例を挙げることはできますか? 'Parallel.ForEach'、おそらく? –
試行錯誤の結果、測定が並行して高速に実行されることがわかります。真剣にも、各要素について何をしているのかわからないので、信頼性をもって回答する方法はありません。 –