12-并发 Bugs (死锁、数据竞争、原子性顺序违反)

12-并发 Bugs (死锁、数据竞争、原子性/顺序违反)

死锁产生的必要条件

  • Atomicity violation,本应原子完成不被打断的代码被打断
  • Order violation,本应按某个顺序完成的未能被正确同步

ABA

例如mysql里的解引用指针和将指针置为空的两个线程,也是一种数据