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