System.Runtime.Caching.MemoryCache - 需要锁定

时间:2011-03-08 15:49:21

标签: .net caching

在使用System.Runtime.Caching.MemoryCache时,我们是否还需要实施锁定功能,例如调用Contains(key);还是已经线程安全?

2 个答案:

答案 0 :(得分:9)

MSDN Library中有关类的文章中的“线程安全”部分记录了这一点:

  

不保证所有实例成员都是线程安全的。

对于.NET类来说这是很正常的,文档是样板文件,并且在一些选定的情况下没有信息。在文档更新之前,MemoryCache就是这种情况。由Davide链接的Connect反馈文章有助于清除这一点:

  

System.Runtime.Caching.MemoryCache是​​线程安全的。多个并发   线程可以读写MemoryCache实例。内部   自动处理线程安全以确保更新缓存   以一致的方式。

     

这可能指的是存储在缓存中的数据   本身可能不是线程安全的。例如,如果放入了List   缓存和两个单独的线程都获得对缓存的引用   列表,这两个线程最终会相互踩到它们   两者都试图同时更新列表。

答案 1 :(得分:6)

根据新文档,MemoryCache类是线程安全的。

MSDN

Microsoft connect