Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 모니터와 잠금의 차이점은 무엇입니까?

<시간/>

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