문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 세마포어 (문단 편집) == 왜 필요한가 == 예를 들어, 아래의 변수가 있다고 하자. int a = 0; 이러한 상황에 해당 값은 전역 변수로 설정되어있고, 이 프로그램은 여러 개의 스레드가 a의 값을 증가시키는 프로그램이라고 할 때 이러한 증상이 발생한다. Process A → fetch a(0) Process B → fetch a(0) Process A → increase a(1) Process A → Store a back(1) Process B → increase a(1) Process B → Store a back(1) 여기서, 외부에서 보게 되면 변수 a에 대해서 1씩 증가하는 과정이 2번 일어났다. 그러므로 B 프로세스가 종료되었을 때는 a는 2가 되어야 하나 여기서는 1이 되어버렸다. 즉, A가 결과를 주기 전에 B가 수행되면서 엉뚱한 값을 시작값으로 가져와서 결과가 잘못 나와 버렸다. 이를 방지하기 위해서 세마포어를 이용하여 a 변수에 Process A가 접근 하고 있을 때 Process B를 정지시키고 Process A가 종료 되었을 때 B가 시작되도록 다시 시작하게 하면 해결된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기