【问题标题】:Possible lambda conflict in Synclock and Parallel.forSynclock 和 Parallel.for 中可能存在 lambda 冲突
【发布时间】:2012-12-06 16:13:35
【问题描述】:

在以下包含 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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      相关资源
      最近更新 更多