同步規範------生產者與消費者(二)

the producer-consumer problem

the bonded-buffer problem

兩個進程共享一個大小爲N的緩衝區----其中一個進程向裏面填充數據(生產者),另外一個進程負責從裏面讀取數據(消費者):

問題的核心:

當緩衝區滿的時候,禁止生產者繼續添加數據,直到消費者 讀取了部分的數據之後;

當緩衝區空的時候,消費者應該等待對方繼續生產之後在執行操作。


S_emptyCount:用於生產者獲得獲得可用的緩衝區的額空間的大小,初始值爲N

S_fillCount用於消費者獲取可用的數據的大小,初始值爲0;

m_mutex:用於操作緩衝區,初始值爲1


對於生產者 :

Produce_item

P(S_emptyCount)

P(S_mutex)

Put+item_to_buffer

V(s_mutex)

V(S_fillCount)



對於消費者

P (S_fillCount)

P (s_mutex)

Read_item_from_buffer

V(S_mutex)

V(S_emptyCount)

Consume


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章