gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:33 28 4
gpt4 key购买 nike

我对使用 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() 在做什么。所有调用都应该是独立的(或使用一种锁定形式)。

关于c# - LINQ AsParallel() 是否保持线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51080492/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com