2010-08-10 61 views
3

我明白在Parallel.ForEach中使用iterator ++不是一個好的選擇,但現在我不得不在Parallel.ForEach循環中使用一個計數器,counter用來選取一個列名任何建議什麼是最好的選擇?我在StackOverflow的某處讀到使用「Interlocked」再次是Parallel.ForEach中的糟糕設計。Counter ++ in Parallel.ForEach

+0

你能提供一些關於你爲什麼需要櫃檯的更多細節嗎?如果您只是遍歷動態對象的列,除非您期望大量的列,我認爲並行化可能不是最好的方法。 – 2010-08-10 12:32:10

+0

你是對的Ryan,但我只是想試試我的運氣,如果我可以利用Parallel.ForEach。我覺得唯一的塊是計數器,否則「任務」是乾淨的,並且不依賴於其他對象。 – Princeton 2010-08-10 12:47:54

回答

1

如果您確實需要並行處理,則索引必須預先計算。類似Enumerable.Range(0, cols.Length).ToArray()。否則,每列將取決於前一個,這顯然不併行。

+0

它不能被預先計算。它是一個行列迭代。通過迭代,我需要解析每一列進行檢查,並基於該結果,我將不得不爲該列輸入值。因此,計數器取決於中間單元格檢查結果。 – Princeton 2010-08-10 12:52:01

+0

可以預先計算的唯一值是最大列數,另一個檢查是看我的計數器是否超過列數。我無法發佈代碼,因爲我指的是許多其他接口。 – Princeton 2010-08-10 12:54:12