2011-07-04 5 views

답변

2

정적 인스턴스 잠금 및 인스턴스 멤버 잠금 사이에는 런타임 차이가 없습니다. 그러나 인스턴스 잠금을 사용하고 정적을 업데이트하는 경우 코드가 손상 될 수 있습니다.

class Broken { 
    static int myCounter; 
    object synch = new object(); 

    void SomeMethod() 
    { 
     lock (synch) { // BAD 
     ++myCounter; 
     } 
    } 
} 
+0

그래서 클래스의 정적 객체를 잠그는 것이 가장 좋습니다. – Eyal

+0

난 항상 잠금 목적으로 정적을 사용 해왔다. –

+0

ok 고맙습니다. -이게 내가 할일입니다! – Eyal

0

허? 나는 그것이 당신이 잠그고있는 것에 의존해야한다고 생각했습니다. 비 정적 객체를 잠 그려는 경우 비 정적 객체를 잠그고 있어야합니다. 그런데, 당신은 당신이 무엇을하려고하는지에 대해 조사하고 싶을지도 모릅니다. 대부분의 경우, 이미 thread에 안전한 오브젝트 내장 언어가 있습니다.

0

왜 비 정적 방법을 잠그고 있습니까? 일반적으로 공유 리소스 (예 : 모든 스레드에서 공유되는 리소스)에 액세스하는 경우에만 동기화가 필요합니다. 인스턴스 메소드로는 이것을하지 않을 것입니다. 싱글 톤을 원할 것입니다.