正答2
解説
正解は2です。
デッドロックは、複数のタスクが互いに相手の確保している資源の解放を待ち続け、処理が進まなくなる状態です。
例えば、タスク1が資源X、タスク2が資源Yを確保したまま、互いに相手の資源を要求すると発生します。
【選択肢別解説】
1:× 優先度を変えても、資源を確保する順番が食い違えば循環待ちは起こります。
優先度は実行順を決めるだけで、デッドロックを防げません。
2:○ 両方のタスクが「XのあとにY」のように同じ順序で資源を獲得すれば、先にXを確保したタスクだけがYに進めます。
循環待ちが起きないため、デッドロックを防げます。
3:× 獲得の順序を逆にすると、一方がX、他方がYを確保して互いに相手を待つ状態が起こり得ます。
これはデッドロックの典型的な原因です。
4:× 優先度を同じにしても、資源の獲得順序の問題は解決しません。
デッドロックの発生は防げません。
【ポイント】
デッドロック防止の基本は、資源の獲得順序をすべてのタスクで統一することです。
ほかに、必要な資源を一度にまとめて確保する方法もあります。