gpt4 book ai didi

java - 当我们已经拥有锁时,再次锁定可重入锁有何帮助?

转载 作者:行者123 更新时间:2023-11-30 06:01:52 25 4
gpt4 key购买 nike

因此,如果当前线程再次获取锁,可重入锁会将计数加一。我无法理解的是为什么以及这如何帮助或使我们受益?

最佳答案

可重入锁执行此操作的原因是不会再次锁定已获取此锁的同一线程。

例如:假设线程 A 正在获取可重入锁 A。线程 B 尝试获取锁 A,这将导致线程 B 被阻塞(有关线程状态的更多信息,请参阅 here )。现在,线程 A 正在尝试(再次)获取锁 A。

由于可重入锁现在增加其计数,因此线程 A 不会被阻塞。线程 A 仍然可以访问锁并可以继续(锁存储有关深度的信息)。如果他(迟早)释放锁,计数将再次降低,以检查线程 A 是否仍然需要锁。如果计数为0,则意味着线程A每次获取锁时都已释放,线程B将获得对锁的访问权。

如果没有重入,您现在将拥有 deadlock 。为什么?因为线程 A 拥有锁并且会等待再次获取它。

<小时/>

并发可能非常复杂,reentrancy有助于(只是一点点)降低这种复杂性。

关于java - 当我们已经拥有锁时,再次锁定可重入锁有何帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com