《非死锁的哲学家进餐算法讲解.docx》由会员分享,可在线阅读,更多相关《非死锁的哲学家进餐算法讲解.docx(3页珍藏版)》请在三一文库上搜索。
1、非死锁的哲学家进餐算法:1 .最多允许4个哲学家同时进餐。算法:Var n:semaphore:=4;Chopstick:array0 4 of semaphore:=1,1,1,1,1;BeginParbeginChopsticki:repeatWait(n;Wait(chopsticki;Wait(chopstick(i+1 mod 5; Eat; signal(chopsticki;signal(chopstick(i+1 mod 5;signal(n;think;until false;parend;end.2 .奇数号哲学家先拿其左边的筷子,然后再那其右边的筷子;而偶数号哲学家先 拿
2、其右边的筷子,然后再那其左边的筷子。算法:Var Chopstick:array0 4 of semaphore:=1,1,1,1,1;BeginParbeginChopsticki:repeatIf (i mod 2 !=0 thenbeginWait(chopsticki;Wait(chopstick(i+1 mod 5;EndElsebeginWait(chopstick(i+1 mod 5;Wait(chopsticki;EndEat;signal(chopsticki;signal(chopstick(i+1 mod 5; think;until false;parend;end.