慢速并行。用于中断

发布于 2024-09-16 05:32:36 字数 263 浏览 5 评论 0原文

我在一个更大的循环中包含以下代码,在分析我的代码后,我发现所有 Parallel.For 执行速度的增益都会在 Stop() 方法完成所需的长时间内丢失。有什么办法可以改善这一点吗?也许调用 Thread.Sleep() ?

谢谢。

Parallel.For(0, 1000, (i, loopState) => 
{ 
   if (a == b)
       loopState.Stop(); 
}); 

I have the following code inside a bigger loop, after profiling my code I discovered that all the Parallel.For gain in execution speed is lost in the long time the Stop() method takes to complete. Is there any way to improve this? Maybe calling Thread.Sleep()?

Thanks.

Parallel.For(0, 1000, (i, loopState) => 
{ 
   if (a == b)
       loopState.Stop(); 
}); 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜光 2024-09-23 05:32:36

我认为您应该使用 loopState.Break() 方法,因为它与 break 关键字并行。 Stop 方法设置 IsStopped 标志,以便其他迭代可以检查此标志并在方便时停止。它不会停止循环。

请参阅停止中断

I think you should use loopState.Break() method, since it is paralel for break keyword. The Stop method sets IsStopped flag, so that other iterations may check this flag and stop at their convenience. It does not stop the loop.

See Stop and Break on msdn

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文