forked from marcing/systemy-operacyjne-niestacjonarne-2018
Prześlij pliki do 'Wykłady'
This commit is contained in:
parent
c2ba50aafe
commit
a924f0b96c
40
Wykłady/prod-kons.cm
Normal file
40
Wykłady/prod-kons.cm
Normal file
@ -0,0 +1,40 @@
|
||||
monitor prod_kons {
|
||||
int produkt;
|
||||
int nowys;
|
||||
condition nowy, uzyty;
|
||||
void dodaj_element(int pr){
|
||||
if(nowys==1) waitc(uzyty);
|
||||
produkt=pr;
|
||||
nowys=1;
|
||||
signalc(nowy);
|
||||
}
|
||||
int pobierz_element(){
|
||||
if(!nowys) waitc(nowy);
|
||||
nowys=0;
|
||||
signalc(uzyty);
|
||||
return produkt;
|
||||
}
|
||||
init {
|
||||
nowys = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void producent(){
|
||||
int i;
|
||||
for(i=0;i<50;i++){
|
||||
dodaj_element(i);
|
||||
}
|
||||
}
|
||||
void konsument(){
|
||||
int i;
|
||||
for(i=0;i<50;i++){
|
||||
cout << pobierz_element() << endl;;
|
||||
}
|
||||
}
|
||||
|
||||
main(){
|
||||
cobegin{
|
||||
producent(); konsument();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user