.NETFramework4.0で並列forループを利用しようとしています。ただし、結果セットにいくつかの要素が含まれていないことに気付きました。
以下のようなコードスニペットがあります。lhs.ListDataはnull許容doubleのリストであり、rhs.ListDataはnull許容doubleのリストです。
int recordCount = lhs.ListData.Count > rhs.ListData.Count ? rhs.ListData.Count : lhs.ListData.Count;
List<double?> listResult = new List<double?>(recordCount);
var rangePartitioner = Partitioner.Create(0, recordCount);
Parallel.ForEach(rangePartitioner, range =>
{
for (int index = range.Item1; index < range.Item2; index++)
{
double? result = lhs.ListData[index] * rhs.ListData[index];
listResult.Add(result);
}
});
lhs.ListDataの長さは7964、rhs.ListDataの長さは7962です。「*」操作を実行すると、listResultの出力は7867のみになります。両方の入力リストにnull要素があります。
実行中に何が起こっているのかわかりません。結果セットに表示される要素が少なくなる理由はありますか?ご意見をお聞かせください...