关于网站大并发情况下的数据的初始化如何处理。

简短节说:网站在运行过程中,一些缓存数据需要初始化工作,那么在大并发情况下会造成数据重复。
举例 if(arrArea == null)

      List arrArea = new List(); 
      arrArea.add(1);
      arrArea.add(2); 
      Cache.Insert(arrArea);
}
假如该段代码不是放在Application_Start方法体中,而是在网站首页上。就会造成arrArea被重复插入相同的数据。
因为瞬间并发多,if(arrArea == null)逻辑判断会来不及。
那么就要进行线程间的同步。
string tongbu = "abc";
lock(tongbu)
 { 
      if(arrArea == null)
       { 
            List arrArea = new List(); 
            arrArea.add(1); 
            arrArea.add(2); 
            Cache.Insert(arrArea); 
      }
}
也可以,
Type tempType = Typeof(_Default);
Monitor.Enter(tempType );
if(arrArea == null)

      List arrArea = new List(); 
      arrArea.add(1); 
      arrArea.add(2); 
      Cache.Insert(arrArea);
}
Monitor.Exit(tempType);
还有很多种方式。我想知道的是,有没有更加高明的方法,因为貌似这两种方法都不太好,我在一个每天流量20万的网站上测试发现不是太稳定。
 -----------------------
不好意思,之前排版有点问题。我发此文目的是想了解大家都在使用什么高明的方法。

posted on 2009-09-02 11:34  pq  阅读(780)  评论(10编辑  收藏  举报

导航