使字典访问线程安全吗?

Tom*_*Tom 25 .net c# dictionary thread-safety

什么是使C#字典访问线程安全的最简单方法?最好只使用锁(对象),但欢迎任何其他想法!

Hen*_*man 58

在.NET 4中,您有ConcurrentDictionary类.

如果您需要使用旧版本的.NET,并希望自己编写:

  • 将Dictionary包装为您班级中的私有字段
  • 单独使用 private object lockObject
  • lockObject在每次访问字典时都要锁定它

  • @MonoLightTech - 有点理论,但如果Dictionary类本身内部的代码或需要"看到"集合的外部代码也锁定它,你可能会遇到死锁.使用关注点分离:lockObject仅用于锁定. (7认同)
  • 只是想知道,为什么"使用单独的锁定对象"? (2认同)