Parallel.ForEach 中是不是有“继续”的等价物?

Posted

技术标签:

【中文标题】Parallel.ForEach 中是不是有“继续”的等价物?【英文标题】:Is there an equivalent to 'continue' in a Parallel.ForEach?Parallel.ForEach 中是否有“继续”的等价物? 【发布时间】:2011-04-15 11:15:02 【问题描述】:

我正在将一些代码移植到Parallel.ForEach,并在代码中出现continue 错误。我可以在Parallel.ForEach 中使用在功能上等同于foreach 循环中的continue 的东西吗?

Parallel.ForEach(items, parallelOptions, item =>

    if (!isTrue)
        continue;
);

【问题讨论】:

【参考方案1】:
return;

(主体只是为每个项目调用的函数)

【讨论】:

【参考方案2】:

当您将循环转换为 Parallel.Foreach 逻辑的兼容定义时,您最终将语句主体设为 lambda。嗯,这是一个被 Parallel 函数调用的动作。

因此,将continue 替换为return,并用Stop()Break() 语句中断。

【讨论】:

ParallelLoopState 的 Stop() 和 Break() 可能比用 return 语句替换 break 更好。 blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx @JasonCoder 这些都不等同于continue @将正确,这就是我说休息的原因。 return 语句确实替换了 continue 语句 @JasonCoder - 啊。我误解了你的意思,哎呀。

以上是关于Parallel.ForEach 中是不是有“继续”的等价物?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要先执行 Return 语句而不是 Parallel。 ForEach [重复]

提高性能异步 Parallel.Foreach

在Windows服务中以低于正常优先级停止Parallel.ForEach

在 Parallel.foreach 中等待 [重复]

何时使用 Parallel.ForEach,何时使用 PLINQ

Parallel.Foreach的全部知识要点