Wenn Sie sehr häufig sperren und entsperren, kann es zu einer Strafe kommen, da das Abrufen und Freigeben von Sperren einige Zeit in Anspruch nimmt und bei Sperren viel Zeit in Anspruch nehmen kann.
Wenn viele Schlösser in einer Struktur wie diese verwendet, werden Sie sehr spezifisch sein, was eigentlich jedes Schloss verriegelt, und stellen Sie sicher, dass Sie von AB-BA Deadlocks vorsichtig sind. Wenn Sie beispielsweise die Struktur des Baums während einer Sperroperation ändern, müssen Sie alle Knoten, die geändert werden sollen, in einer konsistenten Reihenfolge sperren und sicherstellen, dass Threads, die an Nachkommen arbeiten, nicht verwechselt werden.
Wenn Sie sehr viele Sperren haben, die sich über den gesamten Arbeitsspeicher verteilen, können Caching-Probleme je nach Architektur zu Leistungsproblemen führen, da Sperrvorgänge zumindest einen Teil des Caches ungültig machen.
Ihre beste Wette ist wahrscheinlich eine einfache Verriegelungsstruktur zu implementieren, dann ist es das Profil, dann verfeinern sie die Leistung zu verbessern, falls erforderlich. Ich bin mir nicht sicher, was Sie mit dem Baum machen, aber ein guter Anfang ist vielleicht eine einzige Leser-Schreiber-Sperre für den ganzen Baum, wenn Sie erwarten, dass Sie viel mehr lesen, als Sie aktualisieren.
"Wir sollten kleine Wirkungsgrade vergessen, sagen etwa 97% der Zeit: vorzeitige Optimierung ist die Wurzel allen Übels." - Donald Knuth
Ein paar tausend auf einem einzigen Baum ist .. Art fraglich .. aber schwer zu sagen, ohne es wirklich zu sehen. Können Sie genügend Code posten, um ein einigermaßen umfassendes Beispiel zu zeigen, was Sie tun? –