我做的网站使用了cache存储部分公共数据,
但是,这个数据是经常变动的。也就是在多用户同时修改一个cache时,是否需要做同步处理。我查了网上很多资料,Application是需要做同步处理的,但是没有找到关于cache是否需要同步处理但是,application和cache的差别好像只在于是否有过期时间。我的问题是,当多用户同时读取和修改一个cache时,是否需要lock住对象,实现同步操作。

解决方案 »

  1.   

     Thread Safety 
    This type is thread safe.
    理论上线程安全的不需要你额外的写同步代码
      

  2.   

    楼上的,这个有解释吗?cache和application区别很大吗,为什么cache是线程安全,而application却不是?
      

  3.   

    具体看msdn相关类的下面都有说明的,是否线程安全的
      

  4.   

    我晕了,有人说线程安全,又有人说要加锁我这里使用cache,是有修改的。现在我也不知道该怎么办了。
      

  5.   

    修改一定要加锁,如果两个线程同时取缓存数据,并修改了不同地方,不加锁的话最终结果只会有一个修改是有效的.
    单纯的读写缓存要不要加锁,读数据要一次性读出来.比如下来的代码可能出错:
    if(Cache['缓存名']!=null)
    {
    Type T=Cache['缓存名'] as Type;//这样T还是可能为null的
    //...
    }
    要改为
    Type T=Cache['缓存名'] as Type;
    if(T!=null)
    {
    //...
    }
      

  6.   

    修改的时候先清除Cache中的值,然后再缓存
    如果是读取的话,先去Cache中找,如果没有再去查数据,如果有就直接读Cache中的值即可