特别经典的一道题
一、问题描述
📕:
有五个哲学家坐在一圆桌旁,每两位哲学家之间放一支筷子🥢,每个哲学家先思考,然后拿筷子吃饭。为了吃饭每个哲学家必须获得一双筷子,且只从自己左右两边获取筷子。
二、问题求解
semaphore chopstics[5]= {1,1,1,1,1};
semaphore mutex=1;
Pi()
{
while(1)
{
P(mutex);
P(chopstics[i]);
P(chopstics[i+1]%5);
V(mutex);
进餐;
V(chopstics[i]);
V(chopstics[i+1]%5);
}
}
三、碎碎念
每个哲学家互斥访问自己左右两边的筷子资源,都申请到才可以吃饭。不然就思考。