当前位置: 首页 > 工具软件 > 橘子 > 使用案例 >

操作系统之生产者、消费者问题(苹果橘子)

容远
2023-12-01


一、问题描述

桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。
试用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。

 类似资料: