mthli / blog

Yet another blog of myself 👀
https://mthli.xyz
MIT License
42 stars 4 forks source link

recursive-re-entrant-locks/ #21

Open utterances-bot opened 7 months ago

utterances-bot commented 7 months ago

递归锁的缺点

大部分情况下使用递归锁是一种很糟糕的选择。

https://mthli.xyz/recursive-re-entrant-locks/

chengkeke366 commented 7 months ago

当你在阅读代码时,获取锁和释放锁是语义上的屏障。我们可以很自然地假设当锁被释放时不变量仍然保持不变,但在递归锁场景下这种假设并不成立。当 B 调用 A 时,A 并不能确定获取锁时不变量保持不变,也不能确定释放锁时不变量保持不变。

这里怎么理解? 递归锁不是一个线程重复获取锁的过程吗? 如果是一个线程,为什么不能保证变量操作的原子性?