Monitor와 Lock 모두 objects.lock에 대한 액세스를 동기화하는 메커니즘을 제공합니다.
잠금은 바로가기이며 기본 사용을 위한 옵션입니다. 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);
}
}
}
}