并发字典 AddOrUpdate 与索引添加

2024-03-24

在当前项目中,我可以通过两种方式为并发字典中的现有键分配值。

A. concurrentDictionary1[key] = value;

and

B. concurrentDictionary2.AddOrUpdate(key, value, (k, v) => value);

如果我知道“密钥”存在,那么它们在功能上是否等效?

方法“A”是否绕过了并发字典的并发提供的保护?

这里有什么区别呢?选择其中一种而不是另一种的原因是什么?

我查看了 msdn 上的文档,似乎他们只用方法“A”初始化并发字典,而不是更新它。


这是一个老问题,但没有人回答为什么你会使用其中一个而不是另一个。

如果您想要添加或更新并且更新不依赖于现有值,请选择 A(索引器)。

如果您想要添加或更新并且更新取决于现有值,请选择 B (AddOrUpdate)。 AddOrUpdate 将自动执行更新。

因此,在问题的情况下,您想要使用索引器。它更简单、更容易阅读,而且可能更快,因为您没有创建匿名函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并发字典 AddOrUpdate 与索引添加 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • 在什么情况下Java性能会随着内存的增加而降低?

    我们正在 DEV 环境中对 Java 1 6 应用程序进行负载测试 JVM 堆分配为 2Gb Xms2048m Xmx2048m 在负载测试下 应用程序运行流畅 从未使用超过 1 25Gb 的堆 并且垃圾收集完全正常 在我们的UAT环境中
  • 为 python 2.7 而不是 3.4 安装 numpy

    我一直在努力为 python 2 7 而不是 3 4 安装 numpy 这两个版本都在我的 ubuntu 上 我努力了 sudo pip2 安装 numpy 但它说 Requirement already satisfied use upg
  • 自动同义词检测方法

    我目前正在研究一种基于神经网络的短文档分类方法 由于我正在使用的语料库通常在十个单词左右 因此标准统计文档分类方法的用途有限 因此 我正在尝试对训练中提供的匹配实施某种形式的自动同义词检测 更具体地说 我的问题是关于解决以下情况 假设我有
  • MVC4 自定义不显眼的验证器不起作用

    不知道出了什么问题 语法似乎是正确的 但它仍然不会在客户端触发 如果我提交表单 我会得到服务器端验证 客户端什么也没有 这是页面上的代码 Scripts jquery validate min js gt Scripts jquery va
  • 如何在matlab中将向量添加到矩阵?

    如何将向量添加到 Matlab 中的矩阵中 以将向量的 i 索引添加到 i 行中的所有成员的方式 例如 A 1 2 3 4 5 6 6 7 8 v 1 2 3 所需的结果是 2 3 4 6 7 8 9 10 11 多谢 您可以使用bsxfu
  • 求大数阶乘​​的快速方法

    这是我的程序 但是对于像 100 000 这样的大数字 它的运行速度非常慢 有什么选项可以优化吗 import java math BigInteger import java util Scanner public class Main
  • python分块三对角矩阵

    我想从三个 numpy ndarray 开始创建一个块三对角矩阵 有没有任何 直接 方法可以在 python 中做到这一点 先感谢您 Cheers 对于 常规 numpy 数组 使用numpy diag http docs scipy or
  • 如何在 for_each 中组合函数和谓词?

    你怎么能打电话给Function over some容器的一部分 使用for each 我创建了一个for each if 做一个 for i in shapes if i color 1 displayShape i 电话看起来像 for
  • 用于挂钩进程函数的 Linux 模块

    我有一个问题 也许你有一些关于这方面的信息 我想在运行进程中挂钩套接字接收函数 recv 并修改传入数据 我怎么知道 我可以使用内核模块来做到这一点 但我找不到有关如何执行此类挂钩的信息 我尝试过其他方法 例如 Netfilter ipta
  • 使用 Alamofire ObjectMapper 映射到 Swift 对象问题显示 nil

    我是 iOS 和 Swift 开发环境的新手 我试图使用 Alamofire 来提取 JSON 并使用 AlamofireObjectMapper 将检索到的 JSON 集合映射回我的 Swift 对象 问题是我可以通过 Alamofire
  • Calendar.getTime() 失败,并显示 java.lang.IllegalArgumentException:MINUTE(对于亚洲/新加坡时区)

    为什么这段代码会失败 目的是删除时间部分 String dateStr 1982 01 01 String timeZoneID Asia Singapore DateFormat dateFormat new SimpleDateForm
  • django图像上传表单

    我在 django 表单和图像上传方面遇到问题 我已经用谷歌搜索 阅读了文档 甚至还提出了问题 但无法找出问题所在 这是我的文件 我的模特 class UserProfile User user with app settings DESI
  • 以编程方式 IIS 6.0 - 创建虚拟目录且未将其设置为应用程序时出现问题

    因此 我以编程方式在 IIS 6 0 中创建虚拟目录 但我遵循有关创建虚拟目录的唯一 MSDN 或其他 文档 但我的文档位于 http msdn microsoft com en us library ms525598 VS 90 aspx
  • 从范围引用但未定义的 LambdaExpression 变量

    我有一个简单的 lambda 表达式 我想编译和调用它 Expression lt Func lt Commands bool gt gt expression c gt c IsValid test 但是当我执行以下操作时 LambdaE
  • 变异下标越界

    我正在尝试从两个插入符号模型输出创建敏感性和特异性的汇总表 并且在我的 for 循环中 当从包含值的名为 models 的列表中查找值时 它会抛出下标越界错误 这是一个完全可重现的示例 Dplyr 的版本是 0 7 0 谢谢 heart l
  • Laravel、AngularJS 和 CORS 的路由问题

    我一直在广泛寻找解决这个问题的方法 我有一个 AngularJS Web 应用程序 其后端实现为 Laravel 4 如下所示 http app mydomain io AngularJS web app http api mydomain
  • 在 x86 32 位中禁用分页

    我试图直接写入物理内存位置 因此我使用汇编函数首先禁用分页 写入值 然后重新启用分页 但由于某种原因 在尝试写入时仍然会触发页面错误价值 据我了解 在x86 32位中 通过翻转cr0中的第32位来打开和关闭分页 所以这是我的汇编函数 mov
  • 使用 robocopy 复制文件(长名称和路径,以及许多空格) - 缺少参数

    我尝试使用 robocopy 复制文件 但 PowerShell 给出错误 MissingArgument robocopy D Enciclopedia mia Tutorial FATTI DA ME Internet Google L
  • 是否可以让您上传的 iPhone 应用程序自动更新? [复制]

    这个问题在这里已经有答案了 我即将将我的 iPhone 应用程序上传到苹果商店 但我打算在不久的将来发布更多版本 一旦我将新版本上传到苹果商店 是否有办法使我的应用程序自动更新 也就是说 我即将上传版本 1 0 一旦我上传版本 1 x 用户
  • 并发字典 AddOrUpdate 与索引添加

    在当前项目中 我可以通过两种方式为并发字典中的现有键分配值 A concurrentDictionary1 key value and B concurrentDictionary2 AddOrUpdate key value k v gt