日期:2014-05-17  浏览次数:20399 次

缓存底层有锁吗?可以解决并发问题?有空闲的人员帮研究研究..
   

    public static bool TryGetValue(string key, out List<Class> outValue)
        {
            
            if (HttpRuntime.Cache[key] != null)
            {
                outValue = (List<Class>)HttpRuntime.Cache[key];
                return true;
            }
            else
            {
                outValue = null;
                return false;
            }
        }

   

以上代码在并发的时候会不会出现问题,出现的概率高不高。。
比如 线程一读取Cache刚好不为空进入取HttpRuntime.Cache[key],因为HttpRuntime.Cache不稳定或被其他线程更改,导致刚好此时Cache[key]为Null,那么线程一就发生空异常
如果会出现并发的话,那要如何解决。。。。
另外.Net 4.0  System.Runtime.Caching 是否已经内置了这类的解决方案。。。
有空闲的人员帮研究研究..

------解决方案--------------------
引用:
Quote: 引用:

这个你不用担心。
HttpRuntime.Cache 对象是线程安全的。
在.NET 4.0 中 MemoryCache 对象也是线程安全的。是脱离web的缓存解决方案。

那我上面说的那个会出现吗?

不会出现。既然它是线程安全的,就不会出现你所说的问题。