我对使用并发性有一些疑问LINQ AsParallel().
假设我有以下代码:
int counter = 0;
someList.AsParallel().ForEach(item => {
doStuff();
counter++;
});
Run Code Online (Sandbox Code Playgroud)
我没有找到太多在线...
做这样的事情是否安全?有没有更好的方法呢?
我应该做一些锁定动作counter吗?
提前致谢
做这样的事情是否安全?(
counter++)
没有.
开始时没有线程安全,只有单线程的代码.
并行时,你应该确保一切都是线程安全的.
在这种情况下:
//counter++;
Interlocked.Increment(ref counter);
Run Code Online (Sandbox Code Playgroud)
我们无法看到DoStuff()正在做什么.所有调用都应该是独立的(或使用锁定形式).
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |