ホームページ  >  記事  >  データベース  >  デッドロックを解決する 4 つの基本的な方法

デッドロックを解決する 4 つの基本的な方法

Guanhui
Guanhuiオリジナル
2020-05-30 16:57:4317786ブラウズ

デッドロックを解決する 4 つの基本的な方法

デッドロックを解決する 4 つの基本的な方法

1. デッドロックを防ぐ: デッドロックの原因を破壊するためのいくつかの制限を設定する必要条件

2. デッドロックの回避: リソース割り当てプロセス中に、システムが安全でない状態に入ることを防ぐ何らかの方法を使用し、それによってデッドロックを回避します

3. デッドロックの検出: デッドロックの発生を許可しますが、システムを通過した後は

##4. デッドロックの削除: この方法はデッドロック検出と組み合わせて使用​​されます

# デッドロックの概要

##デッドロックとは、実行中に複数のプロセスがリソースを奪い合ったり通信したりすることで発生するブロッキング現象のことで、外部からの力がなければどのプロセスも先に進むことができなくなります。このとき、システムがデッドロック状態にある、またはシステムがデッドロックに陥っているといい、このように常に待ち合っているプロセスをデッドロックプロセスと呼びます。


発生条件

プロセスの実行中にデッドロックが発生する場合がありますが、デッドロックの発生も同様です。デッドロックが発生するには、次の 4 つの条件を満たす必要があります。

1) 相互排他条件: プロセスによる割り当てられたリソースの排他的使用を指します。つまり、特定のリソースが一定期間内に 1 つのプロセスによってのみ占有されることを指します。この時点でリソースを要求している他のプロセスがある場合、要求者はリソースを占有しているプロセスが使い果たされて解放されるまで待つことしかできません。

2) 要求および保留条件: プロセスが少なくとも 1 つのリソースを保持しているが、新しいリソース要求を行っており、そのリソースが他のプロセスによって占有されている状態を意味します。このとき、要求元のプロセスははブロックされていますが、すでにリソースを要求しています。取得された他のリソースは変更されません。

3) 非剥奪条件: プロセスが取得したリソースを指し、使い果たされる前に剥奪することはできず、使い切った場合にのみ解放できます。

4) ループ待機条件: デッドロックが発生した場合、プロセス、つまりリソー​​スの循環チェーン、つまりプロセス集合 {P0, P1, P2,...,Pn} 内の P0 が存在する必要があります。 P1 が占有するリソースを待機中、P1 は P2 が占有するリソースを待機、...、Pn は P0 が占有するリソースを待機しています。

推奨チュートリアル: 「

MySQL チュートリアル


以上がデッドロックを解決する 4 つの基本的な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。