Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18670501
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 数据库开发技术

2008-05-28 09:02:40

大家可能知道在复杂的并且速度较慢的报表,我们就使用先计算数据,然后再缓存起来,然后在访问报表的时候把直接读缓存就行,所以就可能有"重算" 的功能,来更新这个缓存,所以我们就要限制,在有人重算的时候,保证别人不能重算,在单一的时刻只能一个人在重算,我现在就把我刚学的代码共享出来
using System;

namespace SigletonPattern.Sigleton
{
    
/// 
    
/// 功能:在C#用双重锁定实现单件模式
    
/// 编写:jiekeng
    /// 日期:2006年10月20日
    
/// 

    public class DoubLockSigleton
    
{    

        
private static volatile DoubLockSigleton instance;
        
        
/// 
        
/// 辅助锁对象,本身没有意义 
        
/// 

        private static object syncRoot = new Object();

        
/// 
        
/// 构造方法改为Private
        
/// 

        private DoubLockSigleton()
        
{
            
        }


        
public static DoubLockSigleton Instance
        
{
            
get 
            
{
                
if (instance == null)
                
{
                    
lock (syncRoot)
                    
{
                        
if (instance == null)
                            instance 
= new DoubLockSigleton();
                        
return instance;
                    }

                }

                
else
                
{
                    
return null;
                }

            }

        }

        
public static void SetInit()
        
{
             instance 
= null;
        }

    }

}

这是核心的代码,我们现在使用客户调用,看看有

  DoubLockSigleton s1 = DoubLockSigleton.Instance;
        
if (s1 != null)
        
{
            Response.Write(s1.ToString());
        }

        
else
        
{
            Response.Write(
"window.alert('已经有人在重算')");
        }

然后是进行类的初始化,不然的话老是"有人在重算"那可不行,好了,一个简单的模型就出来了

阅读(491) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~