知识卡片

全局锁换简单

普通读书笔记卡 · 1714.b

内容

用全局锁保护多锁获取序列可以避免死锁,但会让本来互不相关的操作也排队。发散:全局锁适合先保正确性或低并发场景,吞吐压力上来后要寻找更细粒度策略。

参考来源

- 位置:《你真的会写代码吗-2021》第8章《多个厨师一锅饭:线程安全》"8.2.1 原子的锁序列"(源文件:_epub-src/OEBPS/Text/0018.xhtml) - 结论依据:原文明确"一个'获取多个锁'的操作只在没有其他'获取多个锁'的操作正在进行时才能开始执行……这是一种非常谨慎的方案,通过限制并发数来避免死锁",说明全局锁牺牲了本可并行的操作换取正确性。 - 原始内容:这就需要使用一个额外的锁(称为globalLock)来确保没有两个这样的"获取多个锁"可以同时执行……即使是需要完全不同锁的"获取多个锁"操作,也必须等待,直到当前"获取多个锁"的操作完成。这是一种非常谨慎的方案,通过限制并发数来避免死锁。