Whi*_*ind 10
如果您经常锁定和解锁,则可能会受到惩罚,因为获取和释放锁定确实需要一些时间,并且如果锁定是争用的话,可能需要相当长的时间.
在这样的结构中使用许多锁时,您必须非常具体地了解每个锁实际锁定的内容,并确保您注意AB-BA死锁.例如,如果要在锁定操作期间更改树的结构,则需要以一致的顺序锁定将要更改的所有节点,并确保处理后代的线程不会混淆.
如果您有大量的锁,跨内存分布,缓存问题可能会导致性能问题,具体取决于体系结构,因为锁定操作通常会使缓存的某些部分无效.
您最好的选择可能是实现一个简单的锁定结构,然后对其进行分析,然后根据需要对其进行优化以提高性能.我不确定你在树上做了什么,但如果你期望阅读的内容远远超过你的更新,那么一个好的起点可能是整个树的单个读写器锁.
"我们应该忘记小的效率,比如大约97%的时间:过早的优化是所有邪恶的根源." - 唐纳德克努特