-->
当前位置:首页 > 题库 > 正文内容

主观题:h567.利用信号量写出不会出现死锁的哲学家进餐问题的算法。

Luz3年前 (2022-11-03)题库520
利用信号量写出不会出现死锁的哲学家进餐问题的算法。







答案:解:
对哲学家按顺序从0到4编号,哲学家i左边的筷子的编号为i,哲学家右边的筷子的编号为(i+1)%5。(2分)
semaphore chopstick[5]={1};
//定义信号量数组chopstick[5],由于侉子是临街资源(互斥),故设置初值均为1。
Pi(){
//i号哲学家的进程
do{
if(i<(i+1)%5)
{
wait(chopstick[i]);
wait(chopstick[(i+1)%5]);(2分)
}
else
{
wait(chopstick[(i+1)%5]);(2分)
wait(chopstick[i]);
}
eat
signal(chopstick[i]);
signal(chopstick[(i+1)%5]);(4分)
think
}while(1);
}


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。