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提出,用以演示他提出的訊號量機制。在同乙個程序位址空間內執行的兩個執行緒生產者執行緒生產物品,然後將物品放置在乙個空緩衝區中供消費者執行緒消費。消費者執行緒從緩衝區中獲得物品,然後釋放緩衝區。當生產者執行緒生產物品時,如果沒有...