嵌套字典对于父 ConcurrentDictionary 来说线程安全吗?

jix*_*xox 2 c# dictionary thread-safety concurrentdictionary

如果我有一个ConcurrentDictionary对象,当在外部执行操作时,ConcurrentDictionary<int, Dictionary<string, string>>() dict;嵌套是否被锁定?DictionaryConcurrentDictionary

场景:外部人员ConcurrentDictionary outerDict正在执行

outerDict.Add(42, new Dictionary<string, string>())

在一个线程上,并且在另一个线程上(同时),内部Dictionary正在执行

outerDict[30].Add("hello", "world")

上述场景中外层ConcurrentDictionary和内层的修改是否都是并发Dictionary,还是同时进行?

Bli*_*ndy 6

当然不是,它们是具有不同访问规则的不同词典。

不过,您的示例很好,因为您正在从不同的线程访问不同的字典。如果您要这样做:

outerDict[30]["a"] = "b"; // in thread 1
outerDict[30]["g"] = "h"; // in thread 2
Run Code Online (Sandbox Code Playgroud)

你很快就会遇到问题。