2016-12-16 3 views
0

私は、複数のプロセス(またはスレッド)がデータ項目を読み書きして、最終結果が複数のプロセスで の実行の順序に依存するようになっていることを理解しています。私の質問はです。コード内に競合状態が存在すると、デッドロックが発生する実行順序が存在することを暗示していますか?コード内に競合状態が存在すると、デッドロックが発生する実行順序が存在することを暗示していますか?

+0

あなたは賢い方法に依存します。例えば。もし十分に近い距離で走っている 'f()'と 'g()'が競合状態になる可能性はあるが、コードの残りの部分を一緒に走らせることはないと証明でき、競争状態から。少なくとも誰かがバージョン2.0のコードを変更して突然両方の機能が同時に実行されるまで、また、レッドコンディションの悪影響は単なるデッドロックよりもはるかに多く、ロックがコードに含まれていない限り、デッドロックは最も問題になることさえありません... – twalberg

答えて

0

競合状態は、実行順序に応じて、異なる最終結果を観察することができることを意味します。

注:この定義は、のいずれかの種類のロックがまったく発生しないことをまったく意味しません。ロックもデッドロックもありません。それはそれと同じくらい簡単です。

もちろん、ロックが関係している可能性があります。時には無効な結果に終わることもあります。時にはデッドロック状態に陥ることもあります。しかし、重要なことは言ったように:それはすべての場合ではなく、可能です。

関連する問題