Livelock
ライブロックとは、スレッド同士が互いに応答して絶えず状態を変化させるにもかかわらず、処理が一切進まない状態である。ブロックされてはいないが、タスクを完了できない。
目的
ライブロックとデッドロックの違いとその防御を理解する。並行プログラムにおける進行性欠陥である。
メカニズム
スレッドが互いに譲り合い続ける(例:双方が相手に取得させるためロックを解放する)ため、どのスレッドもリソースを獲得できない。デッドロックと異なり、スレッドは動作しているが進捗がない。防御策はランダムバックオフ、優先度、再試行回数の制限である。
ユースケース
- 並行処理のライブネス解析
- ライブロックの検出
- 並行プログラムの設計