緩衝池是臨界資源,因此需要為其設定乙個互斥訊號量mutex。此外,為了讓生產者和消費者都能正確使用空、滿緩衝區,還需要設定兩個資源訊號量empty和full,empty和full的初值分別為n和0. 在程序選擇緩衝區時,還需要使用兩個特殊指標in和out,分別指向生產者使用的空緩衝區和消費者使用的滿緩衝區。每當in或out當前指向的緩衝區被生產者或消費者使用之後,需要後移乙個緩衝區。
semaphore mutex = 1;
semaphore full = 0;
semaphore empty = n;
bufftype buffer[n];
producer()
}producer()
}
生產者 消費者問題學習筆記
問題描述 有乙個或多個生產者生產出某種型別的資料,並將其放置在快取區中 有乙個消費者從快取區中取資料,每次取一項 在任何時刻只有乙個消費者或者生產者可以訪問快取區 當快取區已滿時,生產者不會繼續向其中新增資料 當快取區為空時,消費者不會從中移走資料。1 使用二元訊號量解決無限緩衝區生產者 消費者問題...
生產者 消費者問題筆記
生產者之間是互斥的,也即同時只能有乙個生產者進行生產 消費者之間是互斥的,也即同時只能有乙個消費者進行消費 生產者消費者之間是互斥的,也即生產者消費者不能同時進行生產和消費 容器滿時,生產者進行等待 容器空是,消費者進行等待 object的synchronized wait notifyall 實現...
生產者消費者問題
public class producer consumer class godown public godown int num public synchronized void produce int n catch interruptedexception e curr num n syste...