경쟁 상태

경쟁 상태는 소프트웨어 프로그램이 올바르게 작동하기 위해 하나 이상의 프로세스가 실행되는 시점에 의존할 때 발생합니다. 스레드가 예상하지 못한 시점에 실행되거나 완료되면 잘못된 출력이나 프로그램 교착 상태와 같은 예측할 수 없는 동작이 발생할 수 있습니다.

대부분의 소프트웨어 프로그램은 멀티스레드 방식으로 작동하므로 여러 스레드를 동시에 처리할 수 있습니다. 제대로 프로그래밍된 애플리케이션은 각 스레드의 결과가 예상된 순서로 처리되도록 합니다. 프로그램이 예측할 수 없는 순서로 실행되는 스레드에 의존하면 경쟁 상태가 발생할 수 있습니다.

간단한 예로 불리언 값을 처리하는 논리 게이트를 들 수 있습니다. AND 논리 게이트에는 두 개의 입력과 하나의 출력이 있습니다. 입력 A와 B가 모두 true이면 AND 게이트는 TRUE를 출력합니다. 입력 중 하나 또는 둘 다 false이면 FALSE를 출력합니다. 변수 A와 B가 로드되기 전에 프로그램이 논리 게이트의 결과를 확인하면 경쟁 상태가 발생할 수 있습니다. 올바른 처리 순서는 다음과 같습니다:

  1. 변수 A 로드
  2. 변수 B 로드
  3. AND 논리 게이트의 결과 확인

잘못된 순서는 다음과 같습니다:

  1. 변수 A 로드
  2. AND 논리 게이트의 결과 확인
  3. 변수 B 로드

위의 두 번째 예에서 얻는 결과는 첫 번째 예와 같을 수도 있고 다를 수도 있습니다. 예를 들어 변수 B가 로드되기 전과 후에 FALSE라면 결과는 달라지지 않습니다. A가 FALSE라면 B가 TRUE인지 FALSE인지는 중요하지 않습니다. 그러나 A와 B가 모두 true이면 결과는 TRUE여야 합니다. 논리 게이트의 결과를 확인한 후 변수 B를 로드하면 FALSE라는 잘못된 결과가 나옵니다.

경쟁 상태로 인해 일관되지 않은 출력이 생성되면 감지하기 어려운 버그가 발생할 수 있습니다. 프로그래머는 스레드가 일관된 순서로 처리되도록 하여 이러한 문제를 방지할 수 있습니다.

업데이트됨 January 24, 2020 작성: Per C.

quiz지식 테스트하기

Sierra (OS X 10.11) followed which version of OS X?

A
Yosemite
0%
B
Mavericks
0%
C
Mojave
0%
D
El Capitan
0%
Correct! Incorrect!     View the El Capitan definition.
More Quizzes →

Tech Terms 컴퓨터 사전

이 페이지의 경쟁 상태에 대한 정의는 TechTerms.com의 저자가 작성한 원본 정의입니다. 이 페이지를 참조하거나 이 정의를 인용하려면 정의 바로 아래에 있는 녹색 인용 표시줄을 사용하세요.

저희의 목표는 컴퓨터 용어를 이해하기 쉬운 방식으로 설명하는 것입니다. 게시하는 모든 정의에서 정확성과 간결함을 추구합니다. 이 정의에 대한 피드백이 있거나 새로운 기술 용어를 제안하고 싶으시면 문의해 주세요.

Tech Terms 뉴스레터

매일 또는 매주 발행되는 뉴스레터로 기술 지식을 향상시키세요! 지금 구독하고 새로운 용어와 퀴즈를 이메일로 받아보세요.

무료 TechTerms 뉴스레터 구독하기

이메일을 얼마나 자주 받고 싶으신가요?

각 이메일에 포함된 링크를 통해 언제든지 구독을 취소하거나 수신 빈도를 변경할 수 있습니다. 질문이 있으신가요? 문의해 주세요.

참고: 뉴스레터는 영어로 발송됩니다.