コードの構文とセマンティクスを分析するだけで、少なくともいくつかのデッドロックを検出できると最近耳にしました。このトピックはそれ以上議論されませんでした (残念ながらスピーカーによる質問タイムはありませんでした)。インターネットを介した私の調査は満足のいくものにはほど遠いものでした.
私が理解したところでは、コードを実行する前にビルド レベルでデッドロックを検出するという考え方です (したがって、モデル チェックについては話していません。これは基本的に、プログラムのすべての可能な状態をシミュレートして、デッドロックが発生するかどうかを確認しようとします)。 . 可能であれば、IDE と統合して、デッドロックが発生する前に通知することができます。
コード分析を介してデッドロックを検出する方法は何ですか? コード作成レベルでデッドロックを検出できるのはどのような場合ですか? また、これらのアルゴリズムは、モデル チェックや別のランタイム デッドロック検出 (実際にはコストがかかる場合があります) よりも合理的な選択になるほどシンプル (したがって高速) ですか?