python 锁相关:什么是递归锁?
发布于 2022-09-21 08:52:55
关注者
0
被浏览
11
4 个回答
-
在 Python 中为了支持同一个线程中多次请求同一资源,Python 提供了可重入锁。这个 RLock 内部维护着一个 Lock 和一个 counter 变量,counter 记录了 acquire 的次数,从而使得资源可以被多次 require。直到一个线程所有的 acquire 都被 release,其他的线程才能获得资源。递归锁分为可递归锁与非递归锁。
-
假如线程使用了一个原始锁,但是逻辑比较复杂,抽离出了其他的函数,这个函数也要使用这个锁,看似没有问题,但是会造成在没有解锁的情况下再一次锁定,导致线程被阻塞。那这个时候递归锁的作用就出来了,可以在同一个线程中多次锁定,不会造成阻塞,但是锁定了几次就要释放几次。
-
简单一点就是加了一层的锁在下一层还可以被加锁,但是必须要有对应的释放锁
-
简单说:达到上限了,加个while和try吧