我正在使用Span将浮点数组转换为字节array.使用普通的for循环是没有问题的,但是对于我所拥有的数量,我需要并行化我的代码,所以我最终使用了Parall.For.问题是我不能在这个循环中使用Span. 这是我的代码:
Span<float> floats = MemoryMarshal.Cast<byte, float>(posColBuffer);
Parallel.For(0, posColBuffer.Length/4, i=>
{
var scalar = calcScalar(i);
float color = calcColor(i);
var id0 = 3 * i;
for (int j = 0; j < 3; j++)
{
floats[i+j] = directions[id0 + j] * scalar;
floats[colorOffset + i+j] = color;
}
});
IDE告诉我的错误是"不能在lambda表达式中使用类似byref类型‘Span’的局部变量‘Floats’"
我试着把Span的构造放在了Questel.For中,但是没有成功.它没有显示错误,但它从未退出并行for循环.
能做到这一点吗?