繁体   English   中英

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

[英]what techniques should be used to handle objects in asp.net Cache to prevent problems from multiple asp.net worker threads access?

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

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

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

您需要根据问题的情况来决定这一点,一种适合所有解决方案的尺寸在这里不起作用。 如果仅读取数据,则不会出现线程问题。 如果您经常向其中写入数据,则使用缓存对其毫无意义。 如果有点混杂,并且缓存确实对性能有帮助,那么您要么需要诉诸普通的线程同步技术(例如,读者写锁),要么使您的对象不可变,而对对象的更改总是会创建一个新对象。 这种选择会导致其自身的线程问题,因为新对象必须随后替换缓存中的旧对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM