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