我有以下代码片段:
// Initialise rectangular matrix with [][] instead of [,]
double data[][] = new double[m];
for (int i = 0; i < m; i++)
data[i] = new double[n];
// Populate data[][] here...
// Code to run in parallel:
for (int i = 0; i < m; i++)
data[i] = Process(data[i]);
如果这是有道理的,我有一个双打矩阵。我需要对矩阵的每一行进行转换。它是“令人尴尬的并行”,因为从一行到另一行的数据没有连接。
如果我这样做:
data.AsParallel().ForAll(row => { row = Process[row]; });
首先,我不知道是否data.AsParallel()
知道只看第一个下标,或者它是否会枚举所有 m * n 双打。其次,既然row
是我要列举的元素,我不知道我是否可以像这样改变它——我怀疑不会。
那么,不管有没有 PLINQ,在 C# 中并行化这个循环的好方法是什么?