SafetyDictionary


  线程安全字典 ConcurrentDictionary<TKey, TValue> 在多线程下并不绝对安全。通过测试发现,在多线程环境下,它可能会多次添加值,如果值是复杂类型,则在实例化对象时将损耗大量的性能。

  SafetyDictionary 是采用 ConcurrentDictionary<TKey, Lazy<TValue>> 组合的安全字典。它是一个泛型类,有 TKey 和 TValue 两个参数。Lazy<T> 的锁机制确保你的对象只会被实例化一次。SafetyDictionary 的使用场景要根据具体的需求入确定,如果值实例化造成的性能影响可以忽略不计,那么尽量使用 ConcurrentDictionary<TKey, Lazy<TValue>>,因为在确保安全的前提下,是需要牺牲一定的性能作为代价。