我正在考虑使用具有应用程序级别范围的HttpContext.Current.Cache
。我知道Cache对象是线程安全的,但是我不理解的是缓存对象不是线程安全的,所以如何安全地使用和修改它们?
答案 0 :(得分:4)
根据MSDN文章,Cache
类型是线程安全的,但缓存not thread safe
对象可能会导致意外错误。
这是Thread-safe cache libraries for .NET上的非常好的线程(stackoverflow)和关于对象缓存(Sharepoint)的MSDN文章 - Object Caching Techniques
答案 1 :(得分:1)
您自己有责任确保放置在缓存中的对象是线程安全的。
答案 2 :(得分:0)
如果不同的线程将同时使用和修改缓存的对象,那么您将需要一些应用程序级协议。这可以像lock(cachedObject) {....}
如果您可以确定缓存中的某些内容一次只能由一个线程访问,或者无法修改(因为它是不可变的),那么您不需要任何其他内容。
HttpContext.Current.Cache
线程安全意味着多线程可以同时获取和放入内容。因此,如果你想在多个键之间进行一些协调,那么你将需要一些更高级别的锁定。