Ваши замки, вероятно, слишком мелкозернистые.Конечно, оптимальная гранулярность может варьироваться в зависимости от рабочей нагрузки.
Вы можете использовать одну блокировку для всего дерева, и она может работать лучше.Но если вы много читаете и относительно мало вставляете / удаляете, вы в конечном итоге часто блокируете все дерево без веской причины.Возможно, вы захотите использовать блокировку чтения-записи, которая позволила бы нескольким читателям одновременно.
Ваш вопрос напомнил мне о этом другом , когда есть сравнение междудетализированная блокировка и грубозернистая блокировка для связанного списка.В то время как в крупнозернистой версии каждый поток выполнялся по очереди (не параллельно), и общее время выполнения было немного больше, чем сумма времени работы каждого потока, а в мелкозернистой версии общее время работы было намного меньше, чемсумма времени выполнения каждого потока, дополнительные издержки мелкозернистой блокировки полностью компенсируют это преимущество, делая мелкозернистую версию более медленной, чем крупнозернистая.