猿问

如何解决cache失效用户并发请求问题

比如:

if(cache["key"]==null)

{

  lock(this)

  {

    if(cache["key"]==null)

    {

      cache.Insert("key",func())

    }

  }

}

这边的func 是有返回结果的一个委托

代码大概是这么一个逻辑,但是如果其中有一个key的委托如果执行很久的话,那不是其他地方的缓存都要等这个委托执行完,那不是我不需要访问这个缓存的也要等这个委托执行完把lock解开,不知道有没有办法可以就是各个不同名称的缓存的lock互不受影响


拉风的咖菲猫
浏览 652回答 1
1回答

慕姐8265434

那你就需要lock不同的锁,不如我有2个角色,需要修改信息,这2个觉得都有guid这个唯一标示,这个时候,我可以lock(string.Intern(guid.tostring())){  do somethings。这样的话就单独的lock各自的对象。}可以先了解一下啊string.intern这个方法。
随时随地看视频慕课网APP
我要回答