デッドロックとライブロックの違いは何ですか? 質問する

デッドロックとライブロックの違いは何ですか? 質問する

デッドロックライブロックの違いは何か、コードの例を使って説明してもらえませんか?

ベストアンサー1

出典http://en.wikipedia.org/wiki/デッドロック:

並行コンピューティングにおいて、デッドロックとは、アクションのグループの各メンバーが、他のメンバーがロックを解除するのを待っている状態である。

ライブロックはデッドロックに似ていますが、ライブロックに関係するプロセスの状態が互いに常に変化し、どれも進行しないという点が異なります。ライブロックはリソース不足の特殊なケースであり、一般的な定義では特定のプロセスが進行していないことだけが述べられています。

ライブロックの現実世界での例としては、2 人の人が狭い廊下で出会い、お互いが道を譲って礼儀を守ろうとするが、2 人とも同時に同じ方向に何度も動いてしまうため、結局は左右に揺れるだけで何も進まない、という状況が挙げられます。

ライブロックは、デッドロックを検出して回復する一部のアルゴリズムで発生するリスクです。複数のプロセスがアクションを実行すると、デッドロック検出アルゴリズムが繰り返しトリガーされる可能性があります。これは、1 つのプロセス (ランダムにまたは優先順位によって選択) のみがアクションを実行するようにすることで回避できます。

おすすめ記事