用PV操作写出一个不会出现死锁的哲学家进餐问题
用count限定只能有四个哲学家同时拿起第一根筷子。这样就不会出现没有筷子拿的死锁。
semaphore stick[5]={1,1,1,1,1};
semaphore count=4;
main()
{
cobegin
philosopher(0);
philosopger(1);
philosopher(2);
philosopher(3);
philosopher(4);
coend
}
philosopher(int i)
{
while(true){
think;//思考哲学
P(count);
P(stick[i];
P(stick[(i+1)%5]);
eat;//开吃
V(stick[i];
V(stick[(i+1)%5]);
V(count);
}
}
1万+

被折叠的 条评论
为什么被折叠?



