Synclock和Parallel.for中可能的lambda冲突

时间:2012-12-06 16:13:36

标签: vb.net vb.net-2010 parallel.foreach

在下面的包含parallel.for的嵌套循环中,是否适合在下面的synclock中使用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

我宁愿在“i”中使用parallel.for作为外部循环,但是不知道lambda如何影响所有工作?

1 个答案:

答案 0 :(得分:1)

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

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