2セットのコードの7行目に注意してください。デッドロック検出アルゴリズムと比較すると、条件は弱く、リクエスト[i] <W ork Request [i] <WorkR E 、Q 、U 、E S T [ I ]<W o r kはプロセスP i P_iを取り戻しますP私リソース。銀行員のアルゴリズムは、N eed [i] <W ork Need [i] <WorkN E E D [ I ]<W O R kはリソースのみを回復しました。
デッドロック検出アルゴリズムは、Request [i] <W ork Request [i] <Workの場合、現時点でデッドロックがあるかどうかのみを検出しますR E 、Q 、U 、E S T [ I ]<W o r kがtrueの場合、プロセスP i P_iP私私たちはこの瞬間に、それは、デッドロックに関与していない楽観的にそのプロセスを前提とP I P_IP私将来、より多くのリソースには適用されなくなります(多くのアプリケーションシナリオでは、そのような楽観的な仮定があります)。そのため、保持するリソースは、テスト中に直接回復されます。もちろん、この楽観的な仮定が間違っていて、後続の実行でデッドロックが発生した場合は、後続のデッドロック検出アルゴリズムの実行中に検出されます。