9
공유 리소스를 관리하는 클래스가 있습니다. 이제 리소스에 대한 액세스가 여러 매개 변수에 따라 다르므로이 클래스는 프로그램의 정상적인 실행 중에 여러 번 인스턴스화되고 삭제됩니다.비 정적 클래스에서 정적 변수를 잠글 때도 안전합니까?
공유 리소스는 동시성을 지원하지 않으므로 어떤 종류의 잠금이 필요합니다. 내 마음에 와서 가장 먼저하는 일이 클래스의 정적 인스턴스를 가지고,이 같은, 그 위에 잠금을 획득한다 : 이해
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
합니까를하거나 다른 방법을 사용할 것인가?
다른 사람이 같은 유형의 잠금을 설정하면 교착 상태가 발생할 수 있으므로 typeof (class)를 잠글 수 없습니다. 적어도 공용 유형에서는 사용하지 마십시오. – driis
@driis : 합의에 따라 답변에 메모를 추가했습니다. 감사. –
+1 "예 ~ 할 수 있습니다 ...", typeof (클래스)에 대한 잠금 제안에 -1, 따라서 0을 합계합니다. – LukeH