【问题标题】:With Asp.Net Cache, does an incomming queue of calls to an empty cache wait for the 1st call have updated the cache?使用 Asp.Net Cache,对空缓存的调用队列等待第一次调用是否更新了缓存?
【发布时间】:2013-04-25 01:21:00
【问题描述】:

我们正在使用 Asp.Net Cache,通过将缓存属性放在我们要缓存的 WCF 方法上,因此我们无法控制缓存代码。

如果一个人有一个空缓存并获得了 10 个相同类型的调用,其中第一个调用花费了很长时间以至于在第二个调用到达之前它没有更新缓存,那么第二个调用是否会尝试做同样的事情并且以此类推,直到第一次调用更新缓存?

我们在 WCF 中使用 ASP.Net 缓存来体验这种情况,并希望第二次调用等到第一次调用更新缓存。有什么办法吗?

亲切的问候

【问题讨论】:

  • 这取决于你的缓存访问代码是什么样的。您可能想考虑一个进程应该等待多长时间,以及他们应该如何知道缓存当前正在更新,以及其他类似的事情。
  • 谢谢。二更新了问题,我们使用的是Asp.Net Cache。

标签: asp.net caching


【解决方案1】:

您可以使用lock statement 来阻止多个线程同时执行一段代码,例如:

    static object lockKey = new object();
    ..
    if(isInCache)
    {
     return cachedValue;
    }
    else
    {
     lock(lockKey)
     {
      //Code that updates cache
     }
    }

【讨论】:

  • 谢谢。我现在更新了问题,不幸的是我们无法控制缓存机制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 2011-02-17
  • 2014-08-26
  • 1970-01-01
  • 2019-08-08
  • 2018-07-22
相关资源
最近更新 更多