我们正在使用 Asp.Net 缓存,通过将缓存属性放在我们要缓存的 WCF 方法上,因此我们无法控制缓存代码。
如果一个人有一个空缓存并获得 10 次相同类型的调用,其中第一次调用花费了很长时间以至于在第二次调用到达之前它没有更新缓存,那么第二次调用是否会尝试做同样的事情,依此类推,直到第一次调用更新了缓存?
我们正在使用 ASP.Net 缓存的 WCF 体验这种情况,并希望第二次调用等到第一次调用更新缓存。有办法吗?
亲切的问候
您可以使用lock 语句来阻止多个线程同时执行一段代码,例如:
static object lockKey = new object();
..
if(isInCache)
{
return cachedValue;
}
else
{
lock(lockKey)
{
//Code that updates cache
}
}