我最近听说只有通过分析代码的语法和语义才能检测到至少一些死锁。该主题没有进一步讨论(不幸的是,演讲者没有给出提问时间),我通过互联网进行的研究远非令人满意。
据我了解,这个想法是在运行代码之前在构建级别检测死锁(所以我不是在谈论模型检查,它基本上试图模拟我们程序的所有可能状态以查看是否发生任何死锁) . 如果可能的话,那么它可能会与 IDE 集成以在可能发生的死锁发生之前通知它们。
那些通过代码分析来检测死锁的方法是什么(如果是的话)?在哪些情况下可以在代码编写级别检测到死锁?这些算法是否足够简单(因此速度很快),是否比模型检查或其他运行时死锁检测(有时确实代价高昂)成为更合理的选择?