c#当我在字典上只使用TryGetValue时..它是线程安全的吗?

时间:2016-11-14 16:15:35

标签: c# dictionary thread-safety

初始时,我在字典中添加了一些值。

之后,我只需要TryGetValue。

在这种情况下,我需要锁定TryGetValue?

2 个答案:

答案 0 :(得分:2)

是的,如果你只读它/使用TryGetValue

,它是线程安全的

Documentation

  

Dictionary<TKey, TValue> 可同时支持多个读者,   只要未修改集合。即便如此,列举   通过集合本质上不是一个线程安全的过程。在   枚举与写访问争用的罕见情况   必须在整个枚举期间锁定集合。允许的   多个线程可以访问的集合,用于读写   你必须实现自己的同步。

答案 1 :(得分:0)

在群集是线程安全之后读取词典

使用 ConcurrentDictionary 类来确保在需要读写时的用例的线程安全性。

来自MSDN:

  

表示可以的线程安全的键/值对集合   由多个线程同时访问。

     

命名空间:
  System.Collections.Concurrent程序集:mscorlib(在mscorlib.dll中)

Link to MSDN here