我有一个包含 Zmap 数据(ea 高度数据)的大型单维数组,该数组非常大,它由一个区域像素的 100 个测量样本组成。我需要以几种方式处理它,以便可以更正另一个锁定的位图。为了加快处理这个大数组,我使用了 parallel.for
即:
public void MarkErrorSamples(int[]Depthdata,int lowbound)
{
Parallel.For (0, depthData.Length, sampleN =>
{
if(depthData[sampleN] < lowbount)
{
// update redchannel Red value by 20
int x= xfromLockedmemPos(sampleN); // x value based upon sampleN
int y =yfromLockedmemPos(sampleN);
setpixel(x,y,AddRed((getpixelRed(x,y),20);
}
});
}
depthdata[sampleN]
上面的代码有效,但我对访问我现在的方式有些怀疑。我在这里担心的是,我认为线程可能会在每次启动线程以从中检索数据时锁定数组。所以我想知道在 Parallel.for 中使用“外部块”数组数据的正确方法是什么
请注意,在上面的 void 中,不需要更改 depthdata 本身,只需对位图执行操作(使用 lockbits 位图)。