试图了解ConcurrentDictionary的工作原理

保罗·德斯特

我想将值初始化为0(如果尚不存在)。否则,它将增加现有值。

ConcurrentDictionary<int, int> dic = new ConcurrentDictionary<int, int>();
dic.AddOrUpdate(1, 0, (key, old) => old++);
dic.AddOrUpdate(2, 0, (key, old) => old++);

此时,字典具有1和2的键,每个键的值均为0。

        dic.AddOrUpdate(1, 0, (key, old) => old++);

在这一点上,键1的值应为1,而键2的值应为0,但是两者的值均为0。为什么?

斯科特·张伯伦

您有一个误解:

dic.AddOrUpdate(1, 0, (key, old) => old++);

此时,密钥1的值应为1

使用时,old++它将返回要存储的修改之前的原始值。就像您做了以下操作一样:

dic.AddOrUpdate(1, 0, (key, old) => 
{
    var original = old;
    old = old + 1;
    return original;
});

您想要++old哪个将返回修改后的值或只使用

dic.AddOrUpdate(1, 0, (key, old) => old + 1);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

试图了解 SyncLock 的工作原理

来自分类Dev

试图了解AWS扩展的工作原理

来自分类Dev

我试图了解内存分配的工作原理以及发生的时间

来自分类Dev

了解drawLine的工作原理

来自分类Dev

了解git的工作原理

来自分类Dev

了解git的工作原理

来自分类Dev

试图了解Java中的DRY原理

来自分类Dev

了解石墨及其工作原理?

来自分类Dev

了解模型解析的工作原理

来自分类Dev

了解PyTorch Linear的工作原理

来自分类Dev

了解石墨及其工作原理?

来自分类Dev

了解模型解析的工作原理

来自分类Dev

了解可观察的工作原理

来自分类Dev

不了解骨干网的工作原理

来自分类Dev

更深入地了解Realm的工作原理?

来自分类Dev

了解 PATH 环境变量的工作原理

来自分类Dev

试图了解Git工作流程

来自分类Dev

试图了解 describe_instances() 是如何工作的

来自分类Dev

试图弄清指令的工作原理,并为其设计测试

来自分类Dev

需要一些解释以了解Grails的工作原理

来自分类Dev

了解JavaScript灰度算法的工作原理(不使用jQuery)

来自分类Dev

寻找资源以帮助了解Spring Boot的工作原理

来自分类Dev

尝试打印出* ptr ++的值,以了解其工作原理

来自分类Dev

寻找资源以帮助了解Spring Boot的工作原理

来自分类Dev

MySql自连接谓词不了解其工作原理

来自分类Dev

了解具体化和通配符在 Kotlin 中的工作原理

来自分类Dev

Django2.0; 仍然无法了解重定向的工作原理

来自分类Dev

试图了解为什么@transactional(noROllBackFor ....无法正常工作

来自分类Dev

试图了解D3 .data键功能如何工作