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

Ben*_*ter 8 .net caching

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

Han*_*ant 9

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

任何实例成员都不保证是线程安全的.

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

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

这可能是指存储在缓存中的数据本身可能不是线程安全的.例如,如果List放在缓存中,并且两个单独的线程都获得对缓存List的引用,那么如果两个线程都尝试同时更新列表,则它们将最终相互踩踏.

  • MemoryCache类是IS线程安全的.请参阅新的msdn文档. (4认同)

Dav*_*rdi 6

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

MSDN

微软连接