作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
标题非常不言自明。我有一些代码在按顺序执行时可以工作,但如果使用并行循环则不能。我通过使用来调用它
RunXTransposingThreads(Arr1, Arr2, Arr3, Arr4)
成为 Arr
的 Dim 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/
我是一名优秀的程序员,十分优秀!