Если вы блокируете и разблокируете очень часто, может быть штраф, так как получение и освобождение блокировок занимает некоторое время и может занимать достаточное количество времени, если блокируются.
При использовании многих замков в такой структуре вы должны быть очень конкретными в отношении того, что блокирует замок, и убедитесь, что вы осторожны с тупиками AB-BA. Например, если вы изменяете структуру дерева во время операции блокировки, вам нужно будет заблокировать все узлы, которые будут изменены в последовательном порядке, и убедитесь, что потоки, работающие над потомками, не запутываются.
Если у вас очень много блокировок, распространенных по всей памяти, проблемы кэширования могут вызвать проблемы с производительностью, в зависимости от архитектуры, поскольку операции блокировки, как правило, делают недействительными хотя бы часть кэша.
Ваш лучший выбор - это, вероятно, реализовать простую блокирующую структуру, а затем профилировать ее, а затем уточнить для повышения производительности, если это необходимо. Я не уверен, что вы делаете с деревом, но хорошим местом для начала может быть одна блокировка чтения-записи для всего дерева, если вы ожидаете, что прочитаете гораздо больше, чем вы обновите.
«Мы должны забыть о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация - это корень всего зла». - Donald Knuth
Несколько тысяч на одном дереве есть .. вид сомнительных .. но трудно сказать без фактического просмотра. Можете ли вы разместить достаточно кода, чтобы показать достаточно подробный пример того, что вы делаете? –