我有这样一段代码:
foreach (var elem in coll.AsParallel())
{
... // some *local* computation
cache.Add(elem,computation_outcome);
}
其中cache
是ConcurrentDictionary
,Add
是扩展方法,它包装TryAdd
并在失败时抛出异常。
它有效。唯一的问题是,它不能并行运行。
问题——并行运行循环有什么要求?
我知道强制并行模式,但我只是询问并行执行的要求。
最佳答案
AsParallel()
用于 LINQ 查询。它不会使正常的 foreach()
并行运行。
你应该使用类似的东西:
Parallel.ForEach (coll, elem =>
{
... // some *local* computation
cache.Add(elem,computation_outcome);
} );
关于c# - C#中并行运行循环需要什么条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10052841/