해결된 질문
24.03.25 22:05 작성
·
172
0
생산자 소비자 문제는 상품의 개수라는 전역 변수이자 공유 자원이 핵심이고, 이를 위해서 상호배제를 위한 동기화가 필요합니다.
하지만 2회독을 하면서,
예를들어 생산 1000번, 소비 1000번 한다고 했을 때
그냥 생산 반복문 1000번, 소비 반복문 1000번 돌리면 상품의 개수가 0이 되어서 문제가 없지 않나..?
그렇다면 동기화 기법이 왜 필요하지..? 라는 의문점이 들었습니다.
한번 더 생각해보면 실제로 현실에서는 생산 1000번, 소비 1000번이 순서대로 일어나지 않으니까 동기화 기법이 필요한건가..?라는 나름의 해답도 떠올랐는데,
둘의 차이를 어떻게 봐야 할까요?
답변 1
0
2024. 03. 25. 23:04
반복문을 돌리더라도
1) '순차적으로' 1000번 생산, 1000번 소비를 실행할 경우
문제가 되지 않을 수 있습니다.
하지만 동기화가 필요한 상황의 전제는 '동시 실행'(공유 자원에 대한 동시 접근)입니다.
2) 1000명이 동시에 생산하고 1000명이 동시에 소비하는 상황
혹은
3) 1000번 생산을 반복하는 코드와 1000번 소비를 반복하는 상황을 동시에 실행하는 상황과 같습니다.
1)의 경우 동기화가 필요하지 않지만
2) 3)의 경우 동기화가 필요합니다.