작성
·
193
0
Bounder Buffer Problem에서 producer의 wait(empty)는 consumer에서 signal(empty)가 호출된 후에(또는 처음으로 producer가 실행됐다면) 다음 실행 문인 wait(mutex)로 넘어갑니다.
만약 여러 개의 producer가 있다고 했을 때, 하나의 producer가 signal(full)까지 실행하게 되면 다음 동작은 어떻게 결정되는지 궁금합니다. consumer가 호출될 수도 있지만, waiting queue에서 대기하고 있던 producer들도 호출될 수 있다고 생각되는데, 이것은 스케줄러에 의해서 결정되는 건가요?
답변 1
0
여러 개의 producer가 있다고 하더라도, 그 중 하나의 producer가 singal(full)을 호출했다면,
full 을 wait() 하는 것은 consumer 밖에 없으므로, 다음에는 반드시 consumer가 진입하겠죠.
이후에 consumer가 empty를 signal 해 주지 않으면,
producer들은 empty를 wait 하고 있기 때문에 진입할 수가 없게 됩니다.
강의에서 제시된 pthread 예제 코드에서 producer와 consumer를 여러 개 만들어서
다양한 시나리오로 테스트 해보실 것을 권해 드립니다.