多线程安全单例模式

public sealed class Singleton
    {
        //线程安全单例实现模式
        //Double-Checked Locking 模式
        //单例的实例由CLR保证只在首次引用它时才会被创建

        /// <summary>
        /// 多线程情况下控制资源
        /// </summary>
        private static object syncRoot = new Object();
        private Singleton() { }

        private static volatile Singleton _instance;
        public static Singleton Instance
        {
            get
            {
                if (_instance == null)
                {
                    //注意: 这里锁定的是syncRoot,而不是本身,这可以避免产生死锁
                    lock (syncRoot)
                    {
                        if (_instance == null)
                            _instance = new Singleton();
                    }
                }
                return _instance;
            }
        }
    }

 

posted @ 2012-07-28 19:27  xust  阅读(127)  评论(0)    收藏  举报