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);
         }
      }
   }
}

更新於: 19-8-2020

2K+ 瀏覽量

啟動您的 職業生涯

透過完成課程取得認證

開始
廣告