threading.Condition
将锁作为参数,但如果未指定,则默认使用 threading.RLock
。当我在一个线程中对条件变量调用acquire
,然后将其交给另一个线程来wait
时,我发现了这一点。 RLock
会失败,因此解决方案是使用普通锁。默认情况下使用 RLock
的基本原理是什么?
最佳答案
默认情况下使用RLock
来阻止您尝试执行的操作。为了保证谓词受到保护,将在同一个线程中获取锁并等待条件。使用RLock
可以保证这一点。
当将 Lock
与条件一起使用时,没有隐式保证谓词受到保护,因为锁定线程可能会并行地对其进行处理。
关于python - 为什么Python的threading.Condition默认使用RLock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33415788/