在使用System.Runtime.Caching.MemoryCache
时,我们是否还需要实施锁定功能,例如调用Contains(key);
还是已经线程安全?
答案 0 :(得分:9)
MSDN Library中有关类的文章中的“线程安全”部分记录了这一点:
不保证所有实例成员都是线程安全的。
对于.NET类来说这是很正常的,文档是样板文件,并且在一些选定的情况下没有信息。在文档更新之前,MemoryCache就是这种情况。由Davide链接的Connect反馈文章有助于清除这一点:
System.Runtime.Caching.MemoryCache是线程安全的。多个并发 线程可以读写MemoryCache实例。内部 自动处理线程安全以确保更新缓存 以一致的方式。
这可能指的是存储在缓存中的数据 本身可能不是线程安全的。例如,如果放入了List 缓存和两个单独的线程都获得对缓存的引用 列表,这两个线程最终会相互踩到它们 两者都试图同时更新列表。
答案 1 :(得分:6)