2012-09-01 152 views
0

你好=)我想爲以下問題想出一個僞代碼,但是我對信號量的同步有點困惑,所以我希望有人能幫忙!雙排隊的消費者生產者

我們有M個消費者和M個生產者和2個相同N尺寸的緩衝區。消費者從一個緩衝區消費,而生產者在另一個緩衝區產生消費者。當消費者緩衝區爲空且生產者緩衝區已滿時,緩衝區交換並且進程繼續。

有關如何使用信號量來同步這些進程的任何想法?謝謝!

回答

0

您可以使用2個信號量:一個用於生產者緩衝區,一個用於消費者緩衝區。生產者被鎖定每個寫操作,消費者被鎖定每個讀取操作。切換需要鎖定兩個緩衝區。

Btw。如果生產者緩衝區已滿並且消費者緩衝區爲而不是空白,會發生什麼情況?

+0

生產者也應該等到消費者緩衝區爲空。 – user1640377

+0

謝謝你的幫助!信號量在那裏以確保緩衝區交換時沒有進程運行? – user1640377