定义
竞态条件 (Race Condition) 指的是程序的输出依赖于不受控制的事件顺序或时机(如线程调度顺序),导致结果不可预测且通常是错误的。
当多个线程或进程并发访问共享数据,且至少有一个在进行写操作时,如果缺乏适当的同步机制(如临界区保护),最终结果就取决于谁“跑得快”(执行顺序)。
- Check-Then-Act (检查后执行):基于过期的检查结果做决定(如:检查文件不存在 → 创建文件,但中间被别的线程创建了)。
- Read-Modify-Write (读-改-写):读取旧值 → 修改 → 写回,导致中间其他线程的更新被覆盖(丢失更新)。