应该使用什么技术来处理asp.net Cache中的对象,以防止来自多个asp.net工作线程访问的问题?

时间:2010-09-08 22:10:44

标签: asp.net caching httpcontext.cache asp.net-cache

因为asp.net包含多个同时执行的线程 所以如果2个线程访问我从asp.net httpcontext Cache获得的对象(简单或复杂) 如果这2个theads试图同时修改/读取它,这不能导致该对象的状态问题吗? 那么我应该采取什么样的预防措施呢? 例如,我想也许在使用它时锁定对象? (这不会导致性能问题吗?)
或者当我从缓存中检索某个对象时,我应该从中创建一个副本? 或者我可能根本不需要担心这个问题? 感谢

2 个答案:

答案 0 :(得分:0)

在5年多的ASP.NET开发项目中,我从来没有遇到过担心的情况。

有人说......你肯定不会有任何问题阅读任何项目。如果您有一个要经常修改的对象,为什么它在缓存中开始?如果您不需要经常修改它,那么锁定对象将不会是性能问题。

答案 1 :(得分:0)

您需要根据问题的背景来决定这一点,一个尺寸适合所有解决方案在这里不起作用。如果您只是阅读数据,那么您将没有线程问题。如果您经常向此写入数据,则使用缓存毫无意义。如果它有点混合和缓存确实有助于性能等,那么你要么需要采用正常的线程同步技术(例如读写器锁),要么在对象的更改总是创建新对象的情况下使对象不可变。这个选择会导致自己的线程问题,因为新对象必须替换缓存中的旧对象。