2011-04-06 67 views
1

我需要在經典的生產者 - 消費者中實現一個帶有界緩衝區問題的變體。在某種程度上,它更符合讀者和作者的界限,並且有一個有界的緩衝區。一個生產者,兩個消費者變種

我有一個生產者和兩個消費者,但是兩個消費者都必須在緩衝區被覆蓋之前從緩衝區讀取每個項目,所以basic solution不起作用。我天真地試圖讓製片人等待兩次空信號量,然後再發信號兩次,但是這並不奏效,因爲我預料它不會。

一個非常簡單的解決方案是讓生產者生產,然後告知每個消費者,並等待兩次。每個消費者等待生產者,然後消費,然後向讀者發出信號。在這個解決方案中,至少消費者仍然同時執行,但它並不真正捕捉問題的精神,也沒有利用緩衝區。我可以擴展它,以便生產者在緩衝區中生成n項,然後等待消費者閱讀它們,這至少可以減少一些開銷,但最終沒有什麼不同。

約束:

  • 並行線程只
  • 只有一個緩衝

摘要:

  • 一個生產者寫入緩衝
  • 兩位消費者必須在每次讀取每個項目它被覆蓋之前的緩衝區由生產商

我只是無法弄清楚如何在這種情況下應用傳統的解決方案。

回答

0

如何給每個消費者自己的數據項引用隊列,然後讓生產者提供這兩個隊列?

相關問題