我有这样的代码:
foreach (var elem in coll.AsParallel())
{
... // some *local* computation
cache.Add(elem,computation_outcome);
}
其中cache
是ConcurrentDictionary
而Add
是包含TryAdd
并在失败时抛出异常的扩展方法。
有效。唯一的问题是,它并不是并行运行。
问题 - 并行运行循环的要求是什么?
我知道强制并行模式,但我只是询问并行执行的要求。
答案 0 :(得分:2)
AsParallel()
适用于LINQ查询。它不会并行运行foreach()
。
你应该使用类似的东西:
Parallel.ForEach (coll, elem =>
{
... // some *local* computation
cache.Add(elem,computation_outcome);
} );