생산자 소비자 문제 : 공유 변수를 어떻게 동기화 시킬까?
스레드 동기화 문제 중에, 생산자 소비자 문제가 있습니다. 문제는 매우 간단합니다. 생산자는 물건을 생산합니다. 소비자는 원하는 상품이 있으면 가져갑니다. 그렇지 않으면 기다립니다. productor는, 생산된 물품이 없으면 만듭니다. 이런 문제를 어떻게 해결하면 좋을까요? 일단, 물품이 있는지 없는지 관리하는 변수는 state입니다. 이 값이 1이면 있다는 것이고, 0이면 없다는 것입니다. 이것은 두 쓰레드가 동시에 접근해서 read, write를 하면 안 되는 변수라고 할 수 있어요. 즉, 물건이 있을 때, 꺼내 가려고 할 때, lock을 걸어야 하고, buffer에 집어넣으려고 할 때에도 lock을 걸어야 합니다. 그러면, 소비자 Thread는 다음과 같이 설계할 수 있습니다. 생산자 Thread는..
OS/이론
2019. 9. 18. 15:56
최근댓글