2014-12-07 2 views
1

왜 우리가 private obj이 필요한가요? 또는 어떤 종류의 물건? 자물쇠 매개 변수의 목적은 무엇입니까?왜 lock 문과 함께 private 객체를 사용합니까?

 private static object obj = new object(); 
     static void Print() { 
      lock (obj) 
      { 
       Console.WriteLine("Start"); 
       Thread.Sleep(100); 
       Console.WriteLine("End"); 
      } 
     } 

이 코드는 어떻게 처리합니까?

+0

클래스 외부의 코드가 잠금을 해제 할 수 있기 때문에? – rene

답변

2

왜 우리가 private obj이 필요한가요?

실제로 비공개 일 필요는 없으며 코드는 공용 객체와 마찬가지로 잘 작동합니다. 그리고 당신은 어떤 물체도 잠글 수 있습니다.

그러나 가능한 한 많이 잠금 개체를 숨기고 실제로 필요한 잠금 코드에만 액세스 할 수 있도록하는 것이 가장 좋습니다. 교착 상태를 방지하는 데 도움이됩니다.

+0

좀 더 정확한 :이 방법은 외부 객체에 의한 잠금 객체의 남용을 피한다 (교착 상태를 벗어남). 교착 상태가 발생할 수있다. – TomTom

관련 문제