c# - Parallel.Foreach 是否可以安全地将值分配给目标列表项?
问题描述
我有一个带有修改值的源列表,需要使用 Parallel.Foreach 将此更改分配给第二个列表。
我想知道这是否是线程安全的,代码示例:
Parallel.ForEach(sourceList, (srcItem) =>
{
var destItem = destinationList.FirstOrDefault(p => p.Id == srcItem.Id);
destItem.Color = srcItem.Color;
});
没关系?还是需要设置一些同步或锁定?
解决方案
如果有这样的条件
id
1)保证源和目标之间存在一对一的映射id
2)destinationList
期间永远不会改变Parallel.ForEach
,它的内容也不会改变,除了分配Color
运行这段代码应该是安全的,不需要同步。
推荐阅读
- javascript - 无法将 Laravel 刀片文件中的道具传递给 Vue 组件
- mysql - SQL 查询从 2 个公共 ID 表中获取每行的未结余额
- c# - 在 netCore 中管理 SDK 许可证密钥
- c# - Itext c# - 将 html 转换为 pdf/a 时出错 [xobjects 中不允许使用 smask 键]
- authentication - 缺少 ADFS EnableIdpInitiatedSignonpage 属性
- javascript - 在 JS 类中调用 Setter 的问题
- c++ - 删除重复链表
- raspberry-pi - wxPython 窗口在 RPi 上随机冻结,然后行为怪异
- r - 如何在 R 中使用“内部”时仅过滤特定信息
- postman - 在 Postman 中为导入的集合设置授权