鏈表 環形 生產者消費者模型

       生產者消費者問題(英語:Producer-consumer problem),也稱有限緩衝問題(英語:Bounded-buffer problem),是一個多線程同步問題的經典案例。該問題描述了兩個共享固定大小緩衝區線程——即所謂的“生產者”和“消費者”——在實際運行時會發生的問題。生產者的主要作用是生成一定量的數據放到緩衝區中,然後重複此過程。與此同時,消費者也在緩衝區消耗這些數據。該問題的關鍵就是要保證生產者不會在緩衝區滿時加入數據,消費者也不會在緩衝區中空時消耗數據。

生產者消費者遵循 3,2,1 原則:

三種關係:生產者與生產者  互斥

                  消費者與消費者  互斥

                  生產者與消費者   同步 互斥

二種角色       :生產者

                        消費者

一個交易場所: 鏈表或者隊列(接下來的模型中)

鏈表模型






運行結果:




下面寫一個環形隊列的單生產者單消費者模型:



 


從運行結果可以看出 當生產者把隊列生產滿了以後就停了下來(不套圖),當消費者消費資源產生空間時,生產者繼續生產。同理 如果讓生產者生產的慢,消費者消費的快,消費者會一直等,生產者每生產一個,消費者就消費一個,生產者不生產,消費者就不能消費。(不超過)  

發佈了55 篇原創文章 · 獲贊 47 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章