1.单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点
2.lock 语句的含义:lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待,直到该对象被释放
例子:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 单例模式{ class Program { static void Main(string[] args) { Singleton s1 = Singleton.GetInstance(); Singleton s2 = Singleton.GetInstance(); if (s1 == s2) { Console.Write("Objects are the same instance"); } Console.ReadLine(); } } class Singleton { private static Singleton instance; private static readonly object syncRoot = new object(); ////// 构造函数 /// private Singleton() { } public static Singleton GetInstance() { //双重锁定 if (instance == null) { lock (syncRoot) { if(instance==null) { instance = new Singleton(); } } } return instance; } }}
结果: