问题标签 [parallel.for]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
897 浏览

linq - 如何在并行循环中从 IQueryable 中检索元素

我在这里拿到了我的记录。

在那个循环之后dtEmployee

这是我的正常循环,工作正常。

这是我想尝试的并行循环。

我没有任何编译错误,但是当我在 Visual Studio 中运行它时,我收到了这个错误:

截屏

0 投票
1 回答
98 浏览

c# - 使用 Parallel.For 在 C# 中锁定的意外行为

执行以下操作

返回预期的 21,081,849,486.4393。

使用

相反,我得到了完全不同的值,比如在比赛条件下。为什么?

0 投票
1 回答
678 浏览

vb.net - 在 Parallel.For 中调用子例程(并将变量 ByRef 传递给它)线程安全吗?

我在嵌套的 Parallel.For 循环 (vb.net) 中调用了一个子例程 MyPartsMatrix。MyPartsMatrix 需要一个名为“未填充”的变量,该变量通过 ByRef 传递,因为该值在 MyPartsMatrix 子例程中被修改。在子例程 MyPartsMatrix 执行后,我需要获取并存储此值。

与使用普通嵌套 For...Next 循环的非并行代码相比,当我运行此代码的并行版本时,“未填充”变量会产生不同的值。我不明白为什么会这样。

从 Parallel.For 循环内部调用另一个子例程是否线程安全?

这个变量“未填充”线程安全吗?

如果这不是线程安全的,是否有另一种方法来编写它,以便“未填充”变量是线程安全的,或者使调用另一个子例程线程安全?

0 投票
2 回答
1750 浏览

c# - 并行 For 和后台工作者

我有这个简单的:

其次是:

现在,我的挑战是:我实现了 Paralell For 但不能使用进度条..所以我正在考虑使用 BackgroundWorker 但问题是 for 之后的操作取决于对象 img 的负载,发生在因此,在没有完成之前,我无法继续。我对BackGroundWorker的理解是,它在后台执行,而主程序继续执行,所以这种方式在尝试访问到主程序到达for之外的代码时还没有创建的img对象时会带来错误。

在这种情况下是否值得使用 Background Worker 来加速 img 对象的加载?如果是这样,我如何等到后台工作人员完成其工作后再继续执行主程序?我需要向用户报告 for 操作的进度,因此在没有允许我向用户报告的情况下使用并行 for 是行不通的。谢谢,马蒂亚斯。

0 投票
1 回答
275 浏览

c# - 嵌套 Parallel.For 循环性能和大型列表

我正在执行的代码有一个简单的功能。它将元组 ( Tuple<int, int, BigInteger>) 的前 2 个项与另一个项进行比较,并确定所有项是否不同。如果是,Tuple<int, int, int, int BigInteger>则形成一个组合元组 ( ) 并将其添加到List<Tuple<int, int, int, int, BigInteger>>

例子:

由于5、6、7、9都是不同的,所以将它们添加到最终的List中为<5、6、7、9、1000+7979>(Item5是Tuple1和Tuple2中Item3的总和)

这是我的代码

我已经知道同一个元组中的项目不会相同,所以我只需要检查另一个

通常的rtSort.Count()值为 500500,这意味着嵌套Parallel.For循环和For循环在完成之前总共进行了 500500*500500 次迭代(250500250000)。

我的问题是:我能做些什么来改善这一点和/或我做错了什么,实际上可能会阻碍 Parallel.For 循环的性能

谢谢

0 投票
1 回答
3666 浏览

c# - 如何从 Parallel.For 或 Parallel.ForEach lambda 表达式访问 ref 或 out 参数

考虑我的以下(简化)代码:

此代码无法编译。编译器错误信息是:

不能在匿名方法、lambda 表达式或查询表达式中使用 ref 或 out 参数“阈值”

此并行 ComputeSum 方法的目标是并行计算“数字”参数列表中某些数字的总和。此总和将包括所有大于或等于引用的阈值 ref 参数的数字。

这个阈值参数作为 ref 传递,因为它可以在 ComputeSum 方法执行期间被其他一些任务修改,并且我需要在与阈值进行比较时将每个数字与当前阈值进行比较。(我知道,在这个简化的示例中,这样做可能看起来很愚蠢,但实际代码更复杂且更有意义)。

我的问题是:我可以使用什么解决方法通过 Parallel.ForEach lambda-expression 语句中的 ref 访问阈值?

注意:我阅读了“说重复”问题Cannot use ref or out parameter in lambda expressions但我不是问为什么编译器拒绝这个 ref 参数访问,而是我要求一种解决方法来做我打算做的事情.

0 投票
3 回答
1813 浏览

c# - 将 for 循环更改为 Parallel.For 循环

我可以改变我的循环

至:

但是如何用这个循环做到这一点?:

感谢您的回答。

0 投票
2 回答
345 浏览

c# - 在 c# 的嵌套 for 循环中使用 StringBuilder 时出现 IndexOutOfRangeException

  1. 在线获取异常convertedMatrix[temp] = matrix[i,j]
  2. 确切的错误:

    IndexOutOfRangeException:数组索引超出范围。System.Text.StringBuilder.set_Chars(Int32 索引,Char 值)(在 /System.Text/StringBuilder.cs:行号)

  3. 这是代码(在 C# 中):

    /li>
0 投票
0 回答
108 浏览

c# - 在位图数组上使用 Parallel.For 聚合异常

我有在 4x2 位图图像数组上运行的方法,并且我正在使用 Parallel.For 循环遍历 8 个图像中的每一个。然后它遍历每个图像中的每个像素并修改每个图像中的每个像素,并返回完整的位图数组。

当我运行该应用程序时,它会很好地生成数组,但是当它到达此代码时,我得到一个“聚合异常”,但从那个错误中我无法弄清楚究竟是什么问题。

某个好心人可以看看这段代码中是否有任何明显的突出之处吗?谢谢。

0 投票
1 回答
314 浏览

c# - c# 中的并行 For 循环与简单的 for 循环。速度测试

我对是否应该使用 Parallel.For() 有一些疑问。我做了一个简单的测试,结果强烈反对并行化。在什么情况下以及如何正确使用 Parallel.For() 和 Plinq?这是我的测试代码:

结果:

不应该是Parallel.For更快?