死锁Bug

死锁Bug

程序死锁并不遥远,一不小心就发生了...

十分惭愧:自认为理解死锁、晓得死锁产生的条件、熟读相关代码(大部分还是自己写的)却未能注意到死锁的发生...

死锁条件

  1. 多线程
  2. 两把以上锁
  3. 获取锁的顺序有交叉

定位死锁可以按照这些必要条件缩小定位范围。

因为软件死锁一般具有偶发性,不易复现(恰当的时间构造恰当的条件),这个Bug在软件中潜伏了一年多...

避免使用锁,谨慎使用锁,更要避免锁里套锁。

打赏