并行分配不同的数组元素有任何危险吗?

时间:2019-11-29 08:37:05

标签: c# arrays parallel-processing thread-safety

我有一个简单的并行任务,它可以写入数组的单独元素,如下所示:

MyClass[] newObjects = new MyClass[ObjectsPerEdge*ObjectsPerEdge]; // ObjectsPerEdge = const int
Parallel.For(0, ObjectsPerEdge, new ParallelOptions { MaxDegreeOfParallelism = 2 }, z =>
{
    for (int x = 0; x < ObjectsPerEdge; x++)
    {
        newObjects[x + z*ObjectsPerEdge] = new MyClass(...params...);
    }
});

我实质上是逐行填充2D网格,其中每个并行线程应填充自己的一行。假设我的构造函数代码都是线程安全的,以这种方式使用数组是否有危险?也就是说,假设不同线程不会看同一个元素,是否可以安全地分配不同的数组元素?

0 个答案:

没有答案