昨天的高阶版还是有挑战,今天一起看个它的变式好啦
一、问题描述
桌上有一个盘子,最多可以容纳四个水果,每次只能放入或者取出一个水果,爸爸专门向盘子放入苹果,妈妈专门向盘子放入橘子;有一儿一女,儿子每次拿一个橘子吃,女儿每次拿一个苹果吃。请使用信号量和PV操作求解该问题。
📕稍微的变了下:
1.缓冲区容纳水果数量最大值
2.其实比起高阶版简单了些,不要求交替放水果
二、问题求解
🔑:
//相对于上一道题目,不用设置用于交替放水果的信号量了
semaphore mutex;
semaphore empty=4;
semaphore appleCount=0;
semaphore orangeCount=0;
Father()
{
while(1)
{
P(empty);
P(mutex);
放入一个苹果;
V(mutex);
V(appleCount);
}
}
Mother()
{
while(1)
{
P(empty);
P(mutex);
放入一个橘子;
V(mutex);
V(orangeCount);
}
}
Son()
{
while(1)
{
P(orangeCount);
P(mutex);
拿走一个橘子;
V(mutex);
V(empty);
}
}
Daughter()
{
while(1)
{
P(appleCount);
P(mutex);
拿走一个苹果;
V(mutex);
V(empty);
}
}
是不是感觉这道题还是蛮简单的
三、碎碎念
坚持就是胜利!就是喜欢未来是未知的这种感觉,大家加油!💪