2009-05-05 2 views
1

JDK의 ConcurrentHashMap은 잠금 - 스트라이핑 기술을 사용합니다. 잠금 오버 헤드를 최소화하는 것이 좋습니다. 다른 라이브러리 나 도구를 활용하는 도구가 있습니까? 예를 들어 데이터베이스 엔진에서 사용합니까?잠금 - 스트라이핑의 적용 영역

이 기술이 다른 영역에서별로 유용하지 않다면 그 한계는 무엇입니까?

답변

4

잠금 스트라이핑은 데이터 무결성을 손상시키지 않으면 서 높은 경쟁 잠금을 여러 잠금으로 분할하는 방법이있을 때 유용합니다. 이것이 가능한지 또는 어떤 생각을해야하며 항상 그렇지는 않습니다. 데이터 구조 또한 결정에 기여하는 요소입니다. 따라서 해시 테이블을 구현하기 위해 대규모 배열을 사용하는 경우 전체 해시 테이블에 대해 단일 잠금을 사용하여 동기화하면 데이터 구조에 순차적으로 액세스하는 스레드가 생성됩니다. 이것이 해시 테이블에서 같은 위치에 있다면 필요합니다. 그러나 테이블의 두 극단에 액세스하는 경우에는 어떻게 될까요?

확실히 잠금 걸쇠를 사용하여 많은 시간을 절약 할 수 있습니다. scenario을 여러 번 실행하면 실행 시간이 거의 절반으로 줄어 듭니다.

잠금 스트라이핑의 단점은 스트라이핑의 영향을받는 데이터 구조의 상태를 얻는 것이 어렵다는 것입니다. 이 예제에서 테이블의 크기, 또는 전체 테이블을 열거/나열하려고 시도하는 것은 모든 스트라이프 잠금을 획득해야하므로 번거로울 수 있습니다.