(:s の) 配列を作成するための時間のかかる静的 C# メソッドdouble
があるため、操作を並列化しました。
ループに入る前に配列を作成し、その後はその参照を改ざんしていないのでlock
、並列ループ内で更新しながら配列自体をいじればよいと考えています。
アレイ自体で問題ありませlock
んか、それともこのアプローチでパフォーマンスやデッドロックの問題に直面する可能性がありますか? lock
ロックをかけるために別の変数を作成する方が良いですか?
説明するサンプルコードを次に示します。
static double[] CreateArray(int mn, int n)
{
var localLock = new object(); // Necessary?
var array = new double[mn];
Parallel.For(0, n, i =>
{
... lengthy operation ...
lock (array) // or is 'lock (localLock)' required?
{
UpdatePartOfArray(array);
}
});
return array;
}