我有一个带有修改后值的源列表,需要使用Parallel.Foreach将这一更改添加到第二个列表中。
我想知道这是否是线程安全的,代码示例:
Parallel.ForEach(sourceList, (srcItem) =>
{
var destItem = destinationList.FirstOrDefault(p => p.Id == srcItem.Id);
destItem.Color = srcItem.Color;
});
可以吗?还是需要设置一些同步或锁定?
答案 0 :(得分:1)
如果条件如此
1)确保在源id
和目标id
之间存在一对一的映射
2)destinationList
在Parallel.ForEach
期间从不更改,也没有内容,除了分配Color
运行此代码应该是安全的,并且不需要同步。