race condition – 경쟁 상태
경쟁 상태란 장치나 시스템이 두 개 이상의 동작을 동시에 수행하려고 시도했을 때 발생하는 바람직하지 않은 상태를 가리킨다. 그러나 장치나 시스템의 속성 때문에 이러한 동작들은 적절한 순서에 따라 바르게 완료되어야만 한다. 컴퓨터 메모리나 저장장치에서 경쟁 상태가 일어난다. 만약 대규모 데이터를 일고 쓰기 위한 명령이 거의 동시에 내려졌을 때, 컴퓨터는 데이터를 읽는 동안에 바로 그 데이터의 일부 또는 전부에 대해 새로운 데이터를 겹쳐 쓰기 하려는 시도를 하게 된다. 이는 필연적으로 컴퓨터 크래시, “규칙에 어긋나는 연산”이라는 메시지와 함께 프로그램 강제 종료, 원래의 데이터에 대해 읽기 에러 발생, 또는 새로운 데이터의 쓰기 에러 발생 중 하나의 결과를 낳게 된다. 이러한 상황은 메모리나 저장장치 접근의 순서화를 통해 방지될 수 있다. 즉, 읽기와 쓰기 명령이 거의 동시에 내려졌다면, 기본적으로 읽기 명령이 먼저 수행되고 난 뒤, 쓰기 명령을 수행하도록 하는 것이다. 네트웍에서의 경쟁 상태는, 둘 이상의 사용자가 동시에 가용한 채널을 이용하려고 시도하는 찰나, 두 컴퓨터 모두 채널이 현재 사용 중 이라는 통보를 받지 못했을 경우 발생할 수 있다. 통계적으로 볼 때, 이러한 동시 발생은 지체시간이 긴 네트웍에서 주로 발생하는 경향이 있다. 이러한 경쟁 상태를 방지하기 위해서는 개발 단계에서부터 순위에 따른 우선 처리원칙이 수립되어야 한다. 예를 들면, 두 명의 가입자가 거의 동시에 시스템에 접근하려는 시도를 하는 경우에 사용자ID의 알파벳순에 따라 처리 우선순위를 부여하는 등의 원칙이 바로 그것이다. 해커들은 네트웍에 불법으로 접속하려고 경쟁 상태에 관한 취약점을 악용하는 경우도 있다. 경쟁 상태는 때로 입력값 간에 충돌을 일으켰을 때 논리 회로에서도 발생할 수 있다.