在下面的包含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如何影响所有工作?
答案 0 :(得分:1)
使用j1适合这种情况。我怀疑你的收益是最小的,因为你在lambda语句中有代码。 Synclock基本上将它变成几乎同步执行。我会测试性能,可能只做一个简单的For循环。如果你在Synclock之前有更多的处理工作,你可能会开始看到性能上的提升。除此之外,我没有看到任何不能正常运作的东西。
将Parallel.For置于外部循环可能会提高性能,但整个方法必须包含在Lambda语句中。