1
我有下面的代碼片段:如何將PLINQ進行並行處理?
// 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#中平行循環的好方法是什麼?