慢速并行。用于中断
我在一个更大的循环中包含以下代码,在分析我的代码后,我发现所有 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您应该使用
loopState.Break()
方法,因为它与break
关键字并行。Stop
方法设置IsStopped
标志,以便其他迭代可以检查此标志并在方便时停止。它不会停止循环。请参阅停止和中断
I think you should use
loopState.Break()
method, since it is paralel forbreak
keyword. TheStop
method setsIsStopped
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