1

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

4

2 回答 2

0

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

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

于 2010-09-08T22:40:35.513 回答
0

您需要根据问题的上下文来决定这一点,一刀切的解决方案在这里不起作用。如果您只读取数据,那么您将没有线程问题。如果您经常向其中写入数据,则使用缓存毫无意义。如果它有点混合和缓存确实有助于提高性能等,那么您要么需要求助于正常的线程同步技术(例如读写器锁),要么可能使您的对象不可变,其中对对象的更改总是会创建一个新对象。这种选择会导致其自身的线程问题,因为新对象必须随后替换缓存中的旧对象。

于 2010-09-09T13:33:36.297 回答