知识卡片

先定并发策略

普通读书笔记卡 · 1714

内容

线程安全实现前要先定义并发策略:哪些操作可并行,哪些必须互斥。没有策略就直接加锁,常会在竞争条件和过度串行之间摇摆。发散:锁是实现手段,并发边界才是设计。

参考来源

- 位置:《你真的会写代码吗-2021》第8章《多个厨师一锅饭:线程安全》"8.1 定义并发策略"(源文件:_epub-src/OEBPS/Text/0018.xhtml) - 结论依据:原文明确"线程安全的两个主要敌人是竞争条件……和死锁……前者是因为缺乏同步,后者则是因为同步过多",并给出表8-1按并发数列出常用并发策略,说明必须先决定哪些操作能并行、哪些必须互斥,再选择锁的粒度。 - 原始内容:线程安全的两个主要敌人是竞争条件(race condition)和死锁(deadlock)。一般来说,前者是因为缺乏同步,后者则是因为同步过多……表8-1 类的常用并发策略,按照并发数排序(从低到高)……只有当所有方法相互独立时,方法级别并发才有意义。