请遵循以下的简单锁定原则。
请勿尝试在可能会对性能造成不良影响的长时间操作(如 I/O)中持有锁。
请勿在调用模块外且可能重进入模块的函数时持有锁。
一般情况下,请先使用粗粒度锁定方法,确定瓶颈,并在必要时添加细粒度锁定来缓解瓶颈。大多数锁定都是短期持有,而且很少出现争用。因此,请仅修复测得争用的那些锁定。
使用多个锁定时,通过确保所有线程都按相同的顺序获取锁定来避免死锁。