Python中的线程模块提供了两种锁:公共锁和可重入锁。在我看来,如果我需要锁,我应该总是喜欢RLock而不是Lock;主要是为了防止死锁情况。
除此之外,我看到两点,何时更喜欢Lock over RLock:
我的推理是否正确?你能指出其他方面吗?
答案 0 :(得分:10)
两点:
最重要的是,我建议只使用RLock,如果它匹配你正在寻找的语义,否则默认情况下坚持使用。
答案 1 :(得分:3)
通常,您应该构建代码,以便永远不需要递归锁定正常操作(基本上它会强制您在他们正在保护的受保护数据结构周围紧紧使用锁)。因此,您希望捕获异常的递归锁定。