PV操作每日一题-农夫猎人问题

156 阅读1分钟

农夫猎人问题


一、问题描述

有一个铁笼子,每次只能放入一个动物。猎人向笼中放入老虎,农夫向笼中放入羊,动物园等待取笼中的老虎,饭店等待取笼中的羊。请用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);
    }
}

三、碎碎念

其实不难发现这就是弱鸡版的橘子苹果问题,大家撑住!