gpt4 book ai didi

arrays - Parallel.ForEach 不起作用,而正常的 For Each 循环是

转载 作者:行者123 更新时间:2023-12-02 09:14:28 25 4
gpt4 key购买 nike

标题非常不言自明。我有一些代码在按顺序执行时可以工作,但如果使用并行循环则不能。我通过使用来调用它

RunXTransposingThreads(Arr1, Arr2, Arr3, Arr4)

成为 ArrDim Arr1(,) As Single = Array.CreateInstance(GetType(Single), 1025, 129)

Sub RunXTransposingThreads(ParamArray ArraysToTranspose() As Array)

Parallel.ForEach(Of Array)(ArraysToTranspose,
Sub(inArray)
Dim x As Integer = CInt(inArray.GetLength(1))
Dim y As Integer = CInt(inArray.GetLength(0))
Dim outArray(,) As Single = Array.CreateInstance(GetType(Single), x, y)
For i As Integer = 0 To x - 1
For j As Integer = 0 To y - 1
outArray(i, j) = inArray(j, i)
Next
Next
inArray = Array.CreateInstance(GetType(Single), x, y)
Array.Copy(outArray, inArray, inArray.Length)
End Sub)

我尝试使用Function a 而不是Sub,但没有任何效果。 ArrayToTranspose() Array 中的所有元素在主子程序中都没有转置,这意味着 RunXTransformingThreads 之前的 Arr1 > 与该行之后的内容相同。

如果我使用正常的 For Each 循环,一切都会完美。

最佳答案

您需要删除该行:

inArray = Array.CreateInstance(GetType(Single), x, y)

它会覆盖本地引用inArray(作为参数传入)并导致新值无法从匿名方法 block 中出来。 inArray 已经创建,重用实例不是问题,并且允许修改后的数组使其脱离该方法。

关于arrays - Parallel.ForEach 不起作用,而正常的 For Each 循环是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com