그래서 여러 스레드가 동시에 읽기 및 쓰기 액세스 권한을 갖고있는 이진 트리에서 순환 할 때 노드를 잠그는이 구성표를 제안했습니다. 회전 당 네 개의 노드를 잠그는 작업이 포함됩니다. 나는 한 가지 더 똑똑한 방법을 생각해 내게 필요한 잠금을 줄이는 방법을 생각해 냈지만, Google이별로 도움이되지 못했다. (아마도 어쨌든 잘못된 용어를 사용하고있을 것이다.)(More) 스레드 바이너리 트리에서 노드를 순환시킬 때 효율적인 잠금
이것은 오렌지와 레드 노드가 회전에 의해 이동되거나 변경되고 잠글 필요가 있으며 녹색 노드는 회전의 영향을 받지만 노드 자체의 영향을받지 않는 노드에 인접합니다.
내가이 일을 더 나은 방법이 있어야한다 생각, 내가 가진 하나 개의 아이디어는, 영향을받는 네 개의 노드의 스냅 샷을 스냅 샷에서 그들을 회전 후와 현재의 노드를 대체하는 것입니다 스냅 샷 (회전을하는 동안 아무 것도 변경되지 않았다는 가정하에) - 이것은 내가 이 될 것입니다. 잠금을 해제 할 수 있지만 메모리 오버 헤드가 훨씬 클 것으로 생각됩니다. 3 개의 포인터를 할당)?
필자는이 작업을 효율적으로 수행하는 방법에 대한 지침 (노약 없음)을 찾고 있다고 생각합니다.
이미지 링크가 손상되었습니다. –