Блокировка всего дерева.Нет другого пути, который не доставил бы вам неприятности рано или поздно.Конечно, если есть много одновременных операций чтения и записи, вы получите много блокировок и ужасно все замедлитесь.
Java представила список одновременных пропусков в версии 1.6.Списки пропуска работают как деревья, но (предположительно) немного медленнее.Тем не менее, они основаны на односвязных списках и поэтому могут быть теоретически изменены без блокировки с помощью сравнения и замены.Это обеспечивает превосходную многопотоковую производительность.
Я гуглил "skip list" C ++ сравните-и-поменяйте и получил некоторую интересную информацию, но без кода C ++.Тем не менее, Java с открытым исходным кодом, поэтому вы можете получить алгоритм, если вы достаточно отчаялись.Класс Java: java.util.concurrent.ConcurrentSkipListMap .