2011-04-06 11 views
1

바운드 버퍼 문제가있는 고전적 생산자의 변형을 구현해야합니다. 읽는 사람과 작가가 경계를 지닌 버퍼를 사용하는 방식이 더 많습니다.한 명의 생산자, 두 명의 소비자 변형

나는 한 명의 생산자와 두 명의 소비자를 가지고 있지만, 두 소비자는 모두 덮어 쓰기 전에 각 항목을 버퍼에서 읽어야하므로 basic solution이 작동하지 않습니다.

프로듀서가 빈 세마포어를 두 번 기다렸다가 두 번 신호를 보냈지 만 예상하지 못한 결과로 작동하지 않았습니다.

매우 간단한 해결책은 생산자가 생산 한 다음 각 소비자에게 신호를 보내고 두 번 기다리는 것입니다. 각 소비자는 제작자를 기다린 다음 소비하고 리더에게 신호를 보냅니다. 이 솔루션에서 적어도 소비자는 동시에 실행되지만 문제의 정신을 실제로 포착하지는 않으며 버퍼를 활용하지도 않습니다. 생산자가 n 항목을 버퍼에 생성 한 다음 소비자가 읽을 수있을 때까지 기다렸다가 적어도 약간의 오버 헤드를 줄 이도록 확장 할 수는 있지만 궁극적으로는 다르지 않습니다.

제약 조건 : 만

    • 의 pthreads 하나의 버퍼

    요약 :

    • 한 생산자는 각 각 항목을 읽어야합니다
    • 두 소비자 버퍼에 기록 덮어 쓰기 전의 버퍼 생산자가

    이 경우 기존 솔루션을 적용하는 방법을 알 수 없습니다.

  • 답변

    0

    각 소비자에게 데이터 항목에 대한 참조 대기열을 지정한 다음 생성자가 두 대기열에 모두 피드하는 방법은 어떻습니까?

    관련 문제