知识卡片

竞争状态破坏正确性

专业/工作 · 471.b.2.a.4.a.1.c.1.b

内容

多个 goroutine 未同步访问共享资源时,执行顺序会影响结果,这就是竞争状态。发散:并发 bug 难复现,因为它依赖时序而非单一输入。[[原子适合小共享值]]和[[互斥锁保护临界区]]是书中给出的两种常见解法。

参考来源

- 位置:《Go语言实战》第6章《并发》(源文件:_epub-src/OEBPS/Text/part0016.xhtml) - 结论依据:原文围绕“竞争状态”给出定义、机制、流程、对比或限制条件,本卡片据此提炼可迁移的 Go 语言/工程结论,并补充边界或实践启发。 - 原始内容:第6章 并发 本章主要内容 使用goroutine运行程序 检测并修正竞争状态 利用通道共享数据 通常程序会被编写为一个顺序执行并完成一个独立任务的代码。如果没有特别的需求,最好总是这样写代码,因为这种类型的程序通常很容易写,也很容易维护。不过也有一些情况下,并行执行多个任务会有更大的好处。一个例子……