[CS 문답] 경쟁상황이 무엇인가요?


[CS 문답] 경쟁상황이 무엇인가요?

경쟁상황이 무엇인가요? 경쟁상황 여러 프로세스 / 스레드가 동시에 같은 데이터를 조작할때, 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 대표적으로 read-modify-write가 있음 val++ 연산(혹은 val += 1) 은 하나의 동작처럼 보이지만, 사실 그렇지 않음 val 변수를 읽어오고, 1을 더하고, 다시 val 변수에 저장하는 세단계를 거침 이 세단계가 완전히 마무리 되기 전에 context switching이 발생한다면??? val이 0이고 A,B 쓰레드가 각각 val 변수를 1씩 증가시키는 상황을 가정해 보자. A가 현재 0인 val 값을 읽어오고 1을 더한다. A가 최종결과인 1을 val에 저장하기 직전, context swtiching이 발생한다. B는 현재 0인 val 값을 읽어오고 1을 더한다. B는 최종결과인 1을 val에 저장하고 context switching이 발생한다. A는 자신의 남아있는 작업인, 최종결과인 1을 val에 다시 저장한다....



원문링크 : [CS 문답] 경쟁상황이 무엇인가요?