【发布时间】:2012-12-12 00:16:10
【问题描述】:
我有以下代码sn-p:
// 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# 中并行化这个循环的好方法是什么?
【问题讨论】:
标签: c# linq parallel-processing plinq