0

次の parallel.for を含む入れ子になったループでは、以下の同期クロック内でラムダ カウンター "j1" を使用するのは適切ですか? コードは機能しているようですが、情報が失われているかどうかはわかりません。

For i = 1 to Cnt

   ... a lot of code here

   Parallel.For(1, N + 1, Sub(j1)
                     Dim temp As Double = 0
                     temp += a * b * x(j1, i)
                     SyncLock lock
                        y(j1, i) += temp
                     End SyncLock
                End Sub)
Next i

「i」の外側のループに parallel.for を使用したいのですが、ラムダがすべての作業にどのように影響するかわかりませんか?

4

1 に答える 1

1

j1 の使用は、この状況に適しています。ラムダステートメントにコードがあるため、利益があったとしても最小限であると思われます。Synclock は基本的に、ほぼ同期的に実行するようにします。私はパフォーマンスをテストし、おそらく単純な For ループを実行します。Synclock の前に行う処理が多ければ、おそらくパフォーマンスの向上が見られるでしょう。それ以外には、正しく機能しないものは何もありません。

Parallel.For を外側のループに配置するとパフォーマンスが向上する可能性がありますが、メソッド全体を Lambda ステートメントに含める必要があります。

于 2012-12-06T16:33:27.623 に答える