SafetyDictionary
线程安全字典 ConcurrentDictionary<TKey, TValue>
在多线程下并不绝对安全。通过测试发现,在多线程环境下,它可能会多次添加值,如果值是复杂类型,则在实例化对象时将损耗大量的性能。
SafetyDictionary
是采用 ConcurrentDictionary<TKey, Lazy<TValue>>
组合的安全字典。它是一个泛型类,有 TKey 和 TValue 两个参数。Lazy<T>
的锁机制确保你的对象只会被实例化一次。SafetyDictionary
的使用场景要根据具体的需求入确定,如果值实例化造成的性能影响可以忽略不计,那么尽量使用 ConcurrentDictionary<TKey, Lazy<TValue>>
,因为在确保安全的前提下,是需要牺牲一定的性能作为代价。