有一操作系统问题小弟求教各位高手

2025-12-24 11:55:13
推荐回答(1个)
回答1:

解:应设置3个信号量S、So、Sa。
S表示盘子是否为空,其初值为1
So表示盘中是否有桔子,其初值为0
Sa表示盘中是否有苹果,其初值为0
同步描述如下:
int S=1;
int Sa=0;
int So=0;
main()
{
cobegin
father();
son();
daughter();
coend
}

father()
{
while(1)
{
p(S);
将水果放入盘中;
if(放入的是桔子) v(So);
else v(Sa);
}
}

son()
{
while(1)
{
p(So);
从盘中取出桔子;
v(S);
食桔子;
}
}

daughter()
{
while(1)
{
p(Sa);
从盘中取出苹果;
v(S);
食苹果;
}
}