用wait、signal操作实现爸爸、儿子、女儿3个并发进程的同步
问题描述:
用wait、signal操作实现爸爸、儿子、女儿3个并发进程的同步
桌上有一个空盘子,只允许放一个水果.爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果.规定当盘空时,一次只能放一只水果.
答
同步关系
设信号量e(表示盘子为空),a(表示盘子里是苹果),o(表示盘子里是桔子)
int e=1,a=o=0;
main()
{father();
//son();
//daughter();/*三个为并发进程*/
}
father()
{while(1)
{ 洗水果
wait(e)
把水果放入盘子
if(水果是苹果)signal(a)
else signal(o)
}
}
son()
{while(1)
{wait(o)
从盘子里取桔子
signal(e)
吃桔子}
}
daughter()
{while(1)
{wait(a)
从盘子里取苹果
signal(e)
吃苹果}
}