生產者消費者問題(英語:Producer-consumer problem),也稱有限緩衝問題(英語:Bounded-buffer problem),是一個多線程同步問題的經典案例。該問題描述了兩個共享固定大小緩衝區的線程——即所謂的“生產者”和“消費者”——在實際運行時會發生的問題。生產者的主要作用是生成一定量的數據放到緩衝區中,然後重複此過程。與此同時,消費者也在緩衝區消耗這些數據。該問題的關鍵就是要保證生產者不會在緩衝區滿時加入數據,消費者也不會在緩衝區中空時消耗數據。
生產者消費者遵循 3,2,1 原則:
三種關係:生產者與生產者 互斥
消費者與消費者 互斥
生產者與消費者 同步 互斥
二種角色 :生產者
消費者
從運行結果可以看出 當生產者把隊列生產滿了以後就停了下來(不套圖),當消費者消費資源產生空間時,生產者繼續生產。同理 如果讓生產者生產的慢,消費者消費的快,消費者會一直等,生產者每生產一個,消費者就消費一個,生產者不生產,消費者就不能消費。(不超過)