競合状態

競合状態(きょうごうじょうたい、 : Race Conditionレースコンディション、または : Race Hazardレースハザード)は、 システムや処理過程の問題であり、処理過程の出力結果がイベントなどの順序やタイミングと予期しない(かつ危険な)依存関係にある場合をいう。本来の意味は、2つの電気信号が競合していずれかが出力に影響を与える状態である。

競合状態は設計の不十分な 電子工学システム、特に 論理回路で発生するが、 コンピュータ ソフトウェアでもよく発生する。

電子工学

競合状態の典型例は 論理回路システムで入力が変化するときに発生するものである。ある出力が入力の状態に依存する場合、それは定常状態の信号に関して定義されるだけかもしれない。入力の状態が変化するとき、電子システムの物理特性によって出力が変化するまである程度の遅延が生じる。その間、出力は定義された状態以外の不安定な状態となる可能性がある。このような一時的な障害を許すシステムもあるが、例えばその出力信号が他のメモリなどを含むシステムのクロックとして使用される場合、システムは設計されたものとは異なった振る舞いをするかもしれない。

例えば、2入力ANDゲートで論理信号 X とその否定 NOT X を入力にしている場合を考えてみる。理論上、その出力(X AND NOT X)はONになることはない。しかし、信号 X がそのまま入力される側と NOT ゲートを通して入力される側で遅延時間に差があった場合、短い時間ではあるが、一時的にANDゲートの出力がONになることがある。

適切な設計技法により設計者は競合状態を認識して事前にそれを排除することができる( カルノー図)。他にも 準安定状態(Metastable state)が発生することもある。

他の言語で
العربية: حالة تسابق
azərbaycanca: Yarış durumu
čeština: Souběh
italiano: Race condition
한국어: 경쟁 상태
Simple English: Race condition
українська: Стан гонитви
中文: 競爭危害