关于Double Lock的疑问

麻烦请教大家一个问题: 看到张老三的关于一个用double lock来产生线程安全的单例对象的方法突然有一个疑问,
第一种方法:如果把这句话(事实上是一个随便的初始化过程)

Dim source As IConfigurationSource = System.Configuration.ConfigurationSettings.GetConfig("activerecord")
            ActiveRecordStarter.Initialize([
Assembly].Load("ASPNET.StarterKit.Portal.Model"), source)


放在Double Lock的话而这个Double Lock放在一个普通的类文件(可能是基类)的话

private static readonly object lockObj = new object();
if ( _factory == null ) {
   
lock ( lockObj ) {
      
if ( _factory == null ) {
         
// 放在这里;
      }
   } 
// end lock
}

第二种方法:放在全局文件里面
 Sub Application_Start(ByVal sender As ObjectByVal e As EventArgs)
            
' 在应用程序启动时激发
            Dim source As IConfigurationSource = System.Configuration.ConfigurationSettings.GetConfig("activerecord")
            ActiveRecordStarter.Initialize([
Assembly].Load("ASPNET.StarterKit.Portal.Model"), source)

        
End Sub

这两种方法能产生一样的效果吗(也就是说只初始化一次)?还是产生不同的效果?

posted on 2006-05-20 15:08  Neo0820  阅读(763)  评论(0编辑  收藏  举报

导航