나는 여러 소비자/생산자 문제에 조금 갇혀 있습니다. 강의 노트에 나와 있지만, 왜 단일 소비자/생산자 접근 방식이 효과가 없는지 이해할 수 없습니다.버퍼가있는 프로듀서/소비자, 여러 생산자/세마포어 소비자
는한 소비자 및 한 프로듀서의 일반적인 방법은 다음과 같습니다 : 나는 한 프로듀서 및/또는 1 개 이상의 소비자 이상이있는 경우
Producer :
while(true)
emptyBuffers.P();
mutex.P();
buffer.insert(produced item);
mutex.V();
fullBuffers.V();
Consumer :
while(true)
fullBuffers.P();
mutex.P();
buffer.consume(consumed item);
mutex.V();
emptyBuffers.V();
왜이 작동하지 않습니다? 나는 어디에서나 보았지만 이해할 수있는 대답을 찾을 수는 없습니다.
뮤텍스 세마포어가 동시에 버퍼에서 작업에는이 개 프로세스가 없는지 확인합니다, 그래서 당신이 더 많은 프로세스가있는 경우이 속성이 가능하게 변경하는 방법을 볼 수 없습니다 ...
'솔루션 '뮤텍스를 ProducerMutex와 ConsumerMutex로 바꾸는 것입니다. 그러나 이제는 프로듀서와 소비자가 동시에 버퍼에있을 수 있다는 것을 의미합니다. 허용되어서는 안됩니다. 맞습니까? 난 정말이을받지 못했습니다
는 : http://en.wikipedia.org/wiki/Producer-consumer_problem (모듈로 명명)에 주어진 솔루션의
내 시험에서 나를 채점 할 교수가되는 것은 수치 스럽다. :). 그럼에도 불구하고, 저는 당신이 여기에 근본적인 측면을 놓치지 않았 음을 기쁘게 생각합니다. Thx – bambinoh
적어도 이제는 인용 할 수있는 몇 가지 참조 사항이 있습니다 (나를 제외하고 :)) –