(精)操作系统 第三章.ppt

* monitor ringbuffer; var rbuffer:array [0.. n-1] of item; k ,nextempty,nextfull:integer; empty,full:condition; procedure entry put (var product:item); begin if k=n then wait(empty); rbuffer[nextempty]:=product; k:=k+1; nextempty:=(nextempty+1) mod(n); signal(full); end; procedure entry get(var goods:item); begin if k =0 then wait(full); goods:=rbuffer[nextfull]; k:=k-1; nextfull:=(nextfull+1) mod(n); signal(empty); end; begin k := 0; nextempty:=0;nextfull:=0; end; producer: begin repeat produce an item ; ringb

文档评论(0)

1亿VIP精品文档

相关文档