WebMD
本页大纲

竞态条件(Race Condition)

缩写:无

简述

结果依赖于不可控的时序或交错,导致偶发错误的缺陷类别。共享可变状态无同步是主因;表象为「有时才失败」,难复现。

使用场景

多线程写共享、异步读写同一资源、check-then-act。

组成与要点

线程1: 读 x == 0
线程2: 读 x == 0
线程1: 写 x = 1
线程2: 写 x = 1   // check-then-act 交错

实践与应用

• 缩小临界区
• 用原子操作或不可变
• 压力与交织测试

注意事项

• 误以为「概率低」可忽略
• 日志本身改变时序掩盖问题

关联术语

• 并发:竞态出现的背景
• 同步与锁:消除数据竞争的手段之一
• 原子性:不可分割的操作粒度
• 不可变:减少共享可变从而降低竞态