在C#中并行运行循环需要什么条件?

时间:2012-04-07 08:01:33

标签: c# linq loops parallel-processing requirements

我有这样的代码:

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

其中cacheConcurrentDictionaryAdd是包含TryAdd并在失败时抛出异常的扩展方法。

有效。唯一的问题是,它并不是并行运行。

问题 - 并行运行循环的要求是什么?

我知道强制并行模式,但我只是询问并行执行的要求。

1 个答案:

答案 0 :(得分:2)

AsParallel()适用于LINQ查询。它不会并行运行foreach()

你应该使用类似的东西:

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