生產者 消費者問題

2021-06-18 16:02:55 字數 882 閱讀 4495

1)程序互斥問題:緩衝區b是臨界資源,程序p和c不能同時對b進行操作,即只能互斥的操作

2)程序同步問題:p不能往「滿」的的緩衝區b放產品,c不能從空的緩衝區獲得產品。當緩衝區滿時,c必須先於p執行,當緩衝區空時,p必須先於c執行;

我們給出如下基於記錄型(二元)訊號量機制的解法

//  [10/9/2013 qingezha]	1生產者-1消費者-1緩衝區

//p程序不能往滿的緩衝區放產品,設定訊號量為s1

//c程序不能從空的緩衝區取得產品,設定訊號量為s2

//s1的初值為1 ,s2的初值為0,因為只有先生產產品才可以接著消費產品

//p:

while (1)

//c:

while (1)

1)程序互斥問題:緩衝區b是臨界資源,程序p和c不能同時對b進行操作,即只能互斥的操作

2)程序同步問題:p不能往「滿」的的緩衝區b放產品,c不能從空的緩衝區獲得產品。當緩衝區滿時,c必須先於p執行,當緩衝區空時,p必須先於c執行;但是這裡緩衝區大小為n,所以不能簡單的使用互斥訊號量來表示。

我們給出如下基於(多元)訊號量機制的解法

//  [10/9/2013 qingezha]	1生產者-1消費者-多緩衝區

//p程序不能往滿的緩衝區放產品,設定訊號量為s1

//c程序不能從空的緩衝區取得產品,設定訊號量為s2

//s1的初值為n ,s2的初值為0,因為只有先生產產品才可以接著消費產品

//p:

int i = 0;

while (1)

//c:

int j = 0;

while (1)

還有待續!!

生產者消費者問題

public class producer consumer class godown public godown int num public synchronized void produce int n catch interruptedexception e curr num n syste...

生產者 消費者問題

在學習程序互斥中,有個著名的問題 生產者 消費者問題。這個問題是乙個標準的 著名的同時性程式設計問題的集合 乙個有限緩衝區和兩類執行緒,它們是生產者和消費者,生產者把產品放入緩衝區,相反消費者便是從緩衝區中拿走產品。生產者在緩衝區滿時必須等待,直到緩衝區有空間才繼續生產。消費者在緩衝區空時必 須等待...

生產者 消費者問題

生產者 消費者問題是乙個經典的 程序同步問題,該問題最早由dijkstra提出,用以演示他提出的訊號量機制。在同乙個程序位址空間內執行的兩個執行緒生產者執行緒生產物品,然後將物品放置在乙個空緩衝區中供消費者執行緒消費。消費者執行緒從緩衝區中獲得物品,然後釋放緩衝區。當生產者執行緒生產物品時,如果沒有...