0

在以下包含 parallel.for 的嵌套循环中,是否适合在下面的同步锁中使用 lambda 计数器“j1”?该代码似乎有效——但我不知道我是否丢失了任何信息。

For i = 1 to Cnt

   ... a lot of code here

   Parallel.For(1, N + 1, Sub(j1)
                     Dim temp As Double = 0
                     temp += a * b * x(j1, i)
                     SyncLock lock
                        y(j1, i) += temp
                     End SyncLock
                End Sub)
Next i

我宁愿将 parallel.for 用于“i”中的外部循环,但不知道 lambda 如何影响所有这些工作?

4

1 回答 1

1

j1 的使用适合这种情况。由于 lambda 语句中的代码,我怀疑你的收益是微乎其微的。Synclock 本质上将其变为几乎同步执行。我会测试性能并且可能只做一个简单的 For 循环。如果您在 Synclock 之前有更多的处理工作要做,您可能会开始看到性能的提升。除此之外,我没有看到任何无法正常运行的东西。

将 Parallel.For 放在外部循环上可能会提高性能,但整个方法必须包含在 Lambda 语句中。

于 2012-12-06T16:33:27.623 回答