应用题 9.试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的解决算法。
【正确答案】此题主要考查进程控制过程中的信号量技术的运用。
设初始值为1的信号量c[I]表示I号筷子被拿(I=1,2,3,4,…,2n),其中n为自然数。
send(I):
begin
if I mod 2==1 then{
P(C[I]);
P(e[I一1 mod 5]);
Eat;
V(C[I一1 mod 5]);
V(C[I]);
}
else{
P(e[I—l rood 5]);
P(C[I]);
Eat;
V(C[I]);
V(C[I—1 mod 5]);
}
end
【答案解析】