2012-04-07 29 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

相关问题