正在加载图片...
procedure pickup(i:0..4); if(fork=used)monitor.wait(queue); fork=used; } procedure putdown(i:0..4); fork=free; monitor.signal(queue); } procedure test(i:0..4):boolean; if(fork=use)ok=false else fork=use;ok=true;} return ok; } 管程:dining=MODULE; philosopher(i:0..4); with_two_forks:boolean; { while (true) think(); with_two_forks-false;; while(!with_two_forks){ dining.enter(); dining.pickup(i); if(dining.test((i+1)mod 5)with_two_forks=true; else dining.putdown(i); dining.leave(); } eat(); dining.enter(); dining.putdown(i); dining.putdown((i+1)mod 5)); dining.leave();procedure pickup(i:0..4); { if(fork=used) monitor.wait(queue); fork=used; } procedure putdown(i:0..4); { fork=free; monitor.signal(queue); } procedure test(i:0..4):boolean; { if(fork=use) ok=false else { fork=use; ok=true; } ; return ok; } 管程:dining=MODULE; philosopher(i:0..4); with_two_forks:boolean; { while (true) { think(); with_two_forks=false;; while(!with_two_forks) { dining.enter(); dining.pickup(i); if(dining.test((i+1) mod 5) with_two_forks=true; else dining.putdown(i); dining.leave(); } eat(); dining.enter(); dining.putdown(i); dining.putdown((i+1) mod 5)); dining.leave(); } }
<<向上翻页
©2008-现在 cucdc.com 高等教育资讯网 版权所有