【问题标题】:Synclock on an object in the Cache在缓存中的对象上同步
【发布时间】:2011-06-07 06:32:22
【问题描述】:

我能否在缓存中存储的对象上有效地同步锁定?

喜欢:

SyncLock System.Web.HttpContext.Current.Cache("Some Object")
    'do some stuff that is threadsafe on this cached object'
End SyncLock

这会阻止另一个线程修改该缓存对象吗?

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    对于标准缓存,是的。但它不会阻止另一个线程替换缓存中的对象 - 您需要为此使用单独的同步对象。如果你碰巧使用了分布式缓存(例如 Velocity),那么它也不一定可靠。

    【讨论】:

    • So... 在 System.Web.HttpContext.Current.Cache("Some Object") 上同步,然后调用 dim o as object = System.Web.HttpContext.Current.Cache("Some Object ") 实际上可能引用了两个不同的对象?
    • 是的,如果另一个线程碰巧在这两个语句之间设置 System.Web.HttpContext.Current.Cache("Some Object") = newObject 那么您将锁定旧对象,但随后将检索并使用新对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多