定义

竞态条件 (Race Condition) 指的是程序的输出依赖于不受控制的事件顺序或时机(如线程调度顺序),导致结果不可预测且通常是错误的。

当多个线程或进程并发访问共享数据,且至少有一个在进行写操作时,如果缺乏适当的同步机制(如临界区保护),最终结果就取决于谁“跑得快”(执行顺序)。

  • Check-Then-Act (检查后执行):基于过期的检查结果做决定(如:检查文件不存在 创建文件,但中间被别的线程创建了)。
  • Read-Modify-Write (读-改-写):读取旧值 修改 写回,导致中间其他线程的更新被覆盖(丢失更新)。

参考