python - 为什么Python的threading.Condition默认使用RLock?

标签 python multithreading

threading.Condition 将锁作为参数,但如果未指定,则默认使用 threading.RLock。当我在一个线程中对条件变量调用acquire,然后将其交给另一个线程来wait时,我发现了这一点。 RLock 会失败,因此解决方案是使用普通锁。默认情况下使用 RLock 的基本原理是什么?

最佳答案

默认情况下使用RLock来阻止您尝试执行的操作。为了保证谓词受到保护,将在同一个线程中获取锁并等待条件。使用RLock 可以保证这一点。

当将 Lock 与条件一起使用时,没有隐式保证谓词受到保护,因为锁定线程可能会并行地对其进行处理。

关于python - 为什么Python的threading.Condition默认使用RLock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33415788/

相关文章:

python - Pandas - reshape

java - 运行处理程序时出现问题?

c++ - boost::thread join 函数 block 调用线程

python - python中数组的三元运算符

python - 无法重现通过 astropy 获得的源之间的距离值

android - 这是在前 Lollipop 设备上获得涟漪效应的正确方法吗?

java - 计算工作线程处理消息所花费的时间

java - ScheduledExecutorService Thread 创建多个线程

python - 使用别名导入模块

python - 如何让python以普通用户而不是root用户身份打开新终端