假定在生產者和消費者之間的公用緩衝池中具有n個緩衝區,消費者不能同時取乙個緩衝區的產品,生產者不能同時向同乙個緩衝區放入產品。只有緩衝區中有產品時,消費者才可以取產品,只有緩衝區有空時,生產者才可以放入產品。消費者與生產者也不能同時對同乙個緩衝區進行操作。
int in=0,out=0;
item buffer[n];
semaphore mutex=1,empty=n,full=0;//empty代表緩衝池中的空的數量,full代表緩衝池中的產品數
void producer()while(true);
}void consumer()while(true)
}void main()
,此方法需要連續申請兩個訊號量,所以有可能只申請了乙個訊號量,就被中斷,可能會造成死迴圈,解決方法時使用and訊號量。
int in=0,out=0;
item buffer[n];
semaphore mutex=1,empty=n,full=0;//empty代表緩衝池中的空的數量,full代表緩衝池中的產品數
void producer()while(true);
}void consumer()while(true)
}void main()
經典問題生產者 消費者問題
生產者 productor 將產品交給店員 clerk 而消費者 customer 從店員處 取走產品,店員一次只能持有固定數量的產品 此如 20 如果生產者試圖 生產更多的產品,店員會叫生產者停 下,如果店中有空位放產品了再通 知生產者繼續生產 如果店中沒有產品了,店員會告訴消費者等 一下,如 果...
經典程序同步與互斥問題 生產者消費者問題
問題描述 生產者 消費者問題是指有兩組程序共享乙個環形的緩衝池,一組稱為生產者,一組稱為消費者。緩衝池是由若干個大小相等的緩衝區組成,每個緩衝區可以容納乙個產品。生產者程序不斷的將產品放入緩衝池中,消費者不斷將產品從緩衝池中取出。核心 生產者 消費者問題,既存在著程序同步問題,也存在著臨界區互斥問題...
程序模擬生產者 消費者問題
這裡我只是簡單實現了這個經典問題的思路與想打,並且書寫的程式也是能正確的執行出合理的答案,希望今後還可以改進程式使之更加完善 思路描述 1.生產者程序 產生乙個資料,當要送入緩衝區的時候,要檢查緩衝區是否已滿,若未滿,則可將資料送入緩衝區,並通知消費者程序,否則等待 2.對於消費者程序 當它去取資料...