桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。
试用P 、V 操作实现爸爸、儿子、女儿三个并发进程的同步。
设置三个信号量S,So,Sa ,初值分别为1 ,0 ,0。 分别表示可否向盘中放水果,可否取桔子,可否取苹果。
代码如下:
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);
吃苹果;
}
}
当S=1时,可以不设互斥信号量mutex。