LINQ AsParallel() 是否保持线程安全?

Does LINQ AsParallel() preserve thread safety?

我对使用 LINQ AsParallel().

的并发性有一些疑问

假设我有以下代码:

int counter = 0;
someList.AsParallel().ForEach(item => {
    doStuff();
    counter++;
});

网上没找到多少...

这样做安全吗?有更好的方法吗?

我应该为 counter 做一些锁定操作吗?

提前致谢

Is it safe to do something like this? (counter++)

没有

一开始就没有线程安全,只有单线程代码。

并行时,应该确保一切都是线程安全的。
在这种情况下:

//counter++;
Interlocked.Increment(ref counter);

而且我们看不到 DoStuff() 在做什么。所有调用都应该是独立的(或使用一种锁定形式)。