Cả Monitor và lock đều cung cấp cơ chế đồng bộ hóa truy cập đối tượng. lock là cách tắt cho Monitor.Enter với try và finally.
Lock là cách tắt và là lựa chọn cho việc sử dụng cơ bản. Nếu cần kiểm soát nhiều hơn để triển khai các giải pháp đa luồng nâng cao dùng TryEnter(), Wait(), Pulse(), & PulseAll(), thì lớp Monitor là lựa chọn của bạn.
Ví Dụ Cho Lock −
Ví Dụ
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++;
}
}
}
}
Ví Dụ Cho Monitor −
Ví Dụ
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);
}
}
}
}