Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ความแตกต่างระหว่าง Monitor และ Lock ใน C # คืออะไร?


ทั้ง Monitor และ lock มีกลไกที่ซิงโครไนซ์การเข้าถึง object.lock เป็นทางลัดสำหรับ Monitor.Enter ด้วยการลองและสุดท้าย

ล็อคเป็นทางลัดและเป็นตัวเลือกสำหรับการใช้งานพื้นฐาน หากเราต้องการการควบคุมเพิ่มเติมเพื่อใช้โซลูชันมัลติเธรดดิ้งขั้นสูงโดยใช้เมธอด TryEnter() Wait(), Pulse(), &PulseAll() คลาส Montior คือตัวเลือกของคุณ

ตัวอย่างการล็อก

ตัวอย่าง

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