农夫猎人问题
一、问题描述
有一个铁笼子,每次只能放入一个动物。猎人向笼中放入老虎,农夫向笼中放入羊,动物园等待取笼中的老虎,饭店等待取笼中的羊。请用P、V操作写出同步执行的程序。
二、问题求解
🔑:
semaphore cage=1;
semaphore tiger=0;
semaphore sheep=0;
Hunter()
{
while(1)
{
P(cage);
放入老虎;
V(tiger);
}
}
Farmer()
{
while(1)
{
P(cage);
放入羊;
V(sheep);
}
}
Zoo()
{
while(1)
{
P(tiger);
取出老虎;
V(cage);
}
}
Restaurant()
{
while(1)
{
P(sheep);
取出羊;
V(cage);
}
}
三、碎碎念
其实不难发现这就是弱鸡版的橘子苹果问题,大家撑住!