ทั้ง 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); } } } }