2008-11-13 2 views
5

.NET 2.0에서는 ReaderWriterLock을, .NET 3.5에서는 ReaderWriterLockSlim을 보았습니다. 슬림 버전은 잠금을 위해 커널 객체를 사용하지 않습니다. 잠재적으로 큰 (그러나 엄청나게 큰) 양의 객체를 생성 할 수있는 내 컨텍스트에서는이 것이 더 좋습니다..NET 2.0에는 슬림 한 리더/라이터 잠금 장치가 있습니까?

그러나 전환 기간 동안 .NET 2.0 및 3.5에서 필자가 작성한 코드를 사용해야하므로 3.5 버전은 내 용도에 적합하지만 사용할 수 없습니다.

누구든지 .NET 2.0에 연결하여 동일한 이점을 얻을 수있는 유사한 클래스가 있거나 알고 있습니까?

답변

5

지금까지 내가 마이크로 소프트 (그렇지 않으면 ReaderWriterLockSlim 다소 무의미)에서 하나가 아니라는 것을 알고 당신은 당신이 긴 시간을 보냈습니다 우수한 마음을 가지고 신뢰 이외의 타사에서 하나를 찾을 경우로 그것에 대해 생각하고, 구현하고 테스트하며, 나는 그것을 신뢰하지 않을 것입니다. 예를 들어, 임의의 CodeProject 구현을 신뢰하지는 않을 것입니다.

ReaderWriterLockSlim을 사용하면 이 될 수 있다는 구체적인 조치가 있습니까? 등으로 .NET 2.0에 대한 대안을 찾기가 훨씬 낫습니다. 확실히 "가지고있는 것이 좋네요"라고 말하면서도 그것이 인 경우를 의심 할 만하다.은 매우 드물다. 잠금 기능이 병목 현상이라는 것을 이미 알고 있지 않다면, 내가 갖고있는 것을 고수하고 가능한 한 업그레이드 할 준비를하십시오.

ReaderWriterLock 대신 일반 모니터를 사용해 볼 수도 있습니다. 대부분의 경우 RWL의 오버 헤드가 이점보다 큽니다. 물론

는, 모든 경우에 따라입니다 - 앱

+0

내 데이터 구조는 서비스 컨테이너 IoC 유형의 데이터 구조이며, 인스턴스를 포함하는 데이터 구조를 갖습니다. 시작시 대부분 단일 스레드에 쓰지만 대부분 다중 스레드에서 읽히므로 커널 객체를 피하고 lock()을 사용하지 않기를 바랬다. ... –

+0

잠금 코드를 내 클래스로 분리하여 사용하고, 지금은 독점 잠금을 사용하고 나중에 더 나은 잠금을 언제든지 연결할 수있다. 그것이 필요합니다. –

+0

그게 올바른 길로 들리는군요, 그렇습니다. –

0

무엇 PowerThreading 라이브러리에서 ReaderWriterGate에 대해 ... 훨씬 더 빨리 ReaderWriterLockSlim로 정말 많이 할 것 중 하나가 될 수있다?

+1

불행하게도이 클래스는 요청/응답 유형 시나리오에만 적합합니다. 즉, 즉시 반환되고 코드를 호출 할 때 코드를 다시 호출하지만 코드에서 액세스 결과를 반환해야하기 때문에 잠금이 필요하기 때문입니다. 데이터 구조. –

1

No hard lock ReadWriteLocker -이 클래스는 ReaderWriterLock Alternative를 기반으로 설계되었으므로 ReaderWriterLock보다 20-30 % 빠릅니다. 내가 만든

의 차이점은 다음과 같습니다

  1. 는 읽기 잠금을 내부에 중첩 쓰기 잠금을 통해 잠금을 업그레이드 지원합니다. ReaderWriterLock과 달리 업그레이드 잠금은 스레드로부터 안전합니다.
  2. 스레드 안전을 디자인하는 방법을 보여주는 컬렉션 모음집 컬렉션이 있습니다. 그들은 .NET 4.0의 PFX 콜렉션만큼 효율적이지 않지만 다른 혜택이 있습니다.
  3. 초기화 된 모든 잠금이 해제 된 경우 교착 상태가 될 수 없습니다. 그리고 그 다른 모든 잠금 장치는이 로커와 상호 배타적으로 실행됩니다.
  4. 교착 상태를 확인하고 교착 상태 검색 오버 헤드를 해제하면 교착 상태를 확인한 후 기능을 사용할 수 없습니다.
  5. 매우 재귀적이고 ReaderWriterLock 및 ReaderWriterLockSlim보다 여러 번 더 강력한 입니다.

나는 많은 노력을 기울 였고 유용하게 사용되기를 바랍니다. 지금은 아주 새롭고 다른 잠금 장치에 관한 테스트가 필요할 것입니다. 그리고 물론 모든 것은 .NET 2.0 불만입니다.

+0

나는이 책을 출판하고 그것을 알려주는 것에 감사 할 것입니다. –

0

나는 ReaderWriterLock을 사용하는 단점에 대해 질문했으며 ReaderWriterLock에 대한 대안을 담고있는 몇 가지 흥미로운 링크가 있습니다. answer to my question을 살펴보십시오.

관련 문제