核心中的同步 生產者 消費者併發例項

2021-09-26 09:14:56 字數 556 閱讀 3015

隨著人們生活水平的提高,每天早餐基本是牛奶、麵包。在牛奶生產的環節中,生產廠家必須和經銷商保持良好的溝通才能使效益最大化,具體說就是生產一批就賣一批,並且只有賣完了,才能生產下一批,這樣才能達到供需平衡,否則就有可能造成浪費(供過於求)或者物資短缺(供不應求)。假設現在有乙個牛奶生產廠家,它有乙個經銷商,並且由於資金不足,只有乙個倉庫。牛奶生產廠家首先生產一批牛奶,並存放在倉庫裡,然後通知經銷商來批發。經銷商賣完牛奶後,打**再訂購下一批牛奶。牛奶生產廠家接到訂單後,才開始生產下一批牛奶。

一、問題分析

在上述問題中,牛奶生產廠家相當於生產者,經銷商相當於消費者,倉庫則為公共緩衝區。問題屬於單一生產者,單一消費者,單一公共緩衝區。這屬於典型的程序同步問題。生產者和消費者為不同的執行緒,公共緩衝區則為臨界區。在同一時刻,只能有乙個執行緒訪問臨界區。

二、實現機制

#include

#include

#include

#include

#include

#include

#include

#include

<

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者消費者

using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...

生產者消費者

執行緒通訊 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.wait 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。notify 喚醒 喚醒執行緒池等待執行緒其中的乙個。notifyall 喚...