• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件変数を用いた有限バッファ問題を考えています。)

条件変数を用いた有限バッファ問題のプログラムにおける間違いの解説

このQ&Aのポイント
  • 条件変数を用いた有限バッファ問題のプログラムには間違いがあります。
  • 問題の原因は、バッファへのデータの挿入と取り出しの条件が逆になっていることです。
  • また、生産者スレッドと消費者スレッドの終了条件が異なるために正しい結果が得られません。

質問者が選んだベストアンサー

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.1

producer() 内の条件ですが、 > while (count > N) pthread_cond_wait(&full, &lock); ここの「count > N」を「count >= N」とすれば 良いのではないでしょうか。 リングバッファのサイズは N = 5 ですから、 有効な buffer の添字は 0 .. 4 となります。 まだ consume されていない領域に データを書き込んでしまっているのではないかと思います。

nun00nun
質問者

お礼

分かりやすい説明感謝致します。 綺麗に解決しました! ご指摘ありがとうございましたm(_ _)m