C# 中监视器和锁有什么区别?
监视器和锁都提供了一种机制来同步对对象的访问。lock 是 Monitor.Enter 的快捷方式,带 try 和 finally 字句。
Lock 是一个快捷方式,是基本用途的选择。如果我们需要更多控制来使用 TryEnter() Wait()、Pulse() 和 PulseAll() 方法实现高级多线程解决方案,那么 Montior 类就是您的选择。
示例:使用 Lock −
示例
class Program{ static object _lock = new object(); static int Total; public static void Main(){ AddOneHundredLock(); Console.ReadLine(); } public static void AddOneHundredLock(){ for (int i = 1; i <= 100; i++){ lock (_lock){ Total++; } } }
示例:使用监视器 −
示例
class Program{ static object _lock = new object(); static int Total; public static void Main(){ AddOneHundredMonitor(); Console.ReadLine(); } public static void AddOneHundredMonitor(){ for (int i = 1; i <= 100; i++){ Monitor.Enter(_lock); try{ Total++; } finally{ Monitor.Exit(_lock); } } } }
广告