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