2012-04-07 30 views
2

我有這樣一段代碼:在C#中並行運行循環需要什麼條件?

foreach (var elem in coll.AsParallel()) 
{ 
    ... // some *local* computation 
    cache.Add(elem,computation_outcome); 
} 

其中cacheConcurrentDictionaryAdd和是它封裝TryAdd和拋出異常失敗擴展方法。

它的工作原理。唯一的問題是,它不能並行運行。

問題 - 並行運行循環的要求是什麼?

我知道強制並行模式,但我只是問關於並行執行的要求。

回答

2

AsParallel()適用於LINQ查詢。它不會使正常的foreach()並行運行。

你應該使用類似:

Parallel.ForEach (coll, elem => 
{ 
    ... // some *local* computation 
    cache.Add(elem,computation_outcome); 
}); 
+0

啊,謝謝。可惜沒有像Scala那樣的「轉換」。 – greenoldman 2012-04-07 08:54:22

相關問題