이중 자유 연결 이중 목록에 대한 많은 연구가 있습니다. 마찬가지로, 잠금없는 건너 뛰기 목록에 대한 많은 연구가 있습니다. 그러나 내가 말할 수있는 최선의 방법은 아무도 잠금이없는 이중 링크 된 건너 뛰기 목록을 관리하지 않았다는 것입니다. 누구도 그 반대의 연구를 알고 있습니까? 그렇지 않은 이유는 무엇입니까?이중 자유 연결 이중화 목록 잠금
편집 : 특정 시나리오는 빠른 분위 (50 %, 75 % 등) 누적 기 구축에 사용됩니다. 샘플은 O (log n) 시간에 스킵 목록에 삽입됩니다. 현재 quantile에 반복자를 유지함으로써 삽입 된 값을 O (1) 시간의 현재 quantile과 비교할 수 있으며 삽입 된 값이 quantile의 왼쪽 또는 오른쪽에 있는지 여부를 쉽게 판별 할 수 있고 quantile 그 결과로 이동해야합니다. 이전 포인터가 필요한 왼쪽 이동입니다.
필자가 이해 하듯이 여러 스레드가 한꺼번에 삽입하고 제거 할 때 이전 포인터를 일관되게 유지하는 데 어려움이 따릅니다. 나는 솔루션이 포인터 마킹을 영리하게 사용한다고 생각한다.
그래서 목록에 항목을 추가하고 각 분위가 시작 값, 범위 및 양자 항목의 시작 항목에 대한 포인터를 알 수 있도록 분별 자료를 조정할 때마다? 나는 스킵 목록이 더럽다면 요청 기준으로 quantile 정보를 계산하는 것이 너무 느리다는 것을 추측하고있다. – johnnycrash
@johnnycrash 삽입 할 때마다 각 분위수의 값을 알고 있으므로 새 값이 quantile보다 크거나 작은지를 알 수 있고, 단위로 전방 또는 후방으로 이동해야하는지 여부를 알 수 있습니다. 나는 당신이 범위에 의하여 의미하는 무슨을 확실하지 않다; quantile은 항상 단일 값입니다. 이 스키마에서 궁극적으로 skip-list 메서드의 상수 인수는 순진한 메서드보다 높았지 만 연산 수가 증가함에 따라 매우 잘 조정되었습니다. Quantile을 갱신하는 데 드는 비용은 인서트마다 일정했습니다. – tgoodhart