这个特定的 Parallel.For() 循环线程安全吗?

Is this particular Parallel.For() loop thread-safe?

Parallel.For(0, someStringArray.Count, (i) =>
{
    someStringArray[i] = someStringArray[i].Trim();
});

我确定只有 通过 Parallel.For 读取 集合才被认为是线程安全的。

编辑: 该数组未通过代码的其他部分访问。

Is this particular Parallel.For() loop thread-safe?

取决于 someStringArray 类型的实现,只要您在枚举时不修改集合本身即可。

在您的示例中,两个线程绝不会修改集合中的同一元素。

一般来说,集合不被认为是线程安全的,因为它们的内部逻辑可能会失败,例如,如果您从一个线程读取一个项目,而另一个线程添加一个项目并导致集合调整大小(和项目被复制)在读操作的中间。

虽然固定大小的数组不应该发生这种情况。 List<T> 在幕后使用数组,但在一般情况下您不应该真正依赖该实现细节。