設置1個互斥信號量mutex;3個同步信號量apple、orange均爲0,empty_num=2,empty_num即盤子上還可以放水果的個數。
對於父親進程Father():
while ()
{
P(empty_num); // 資源信號量的PV操作應放在互斥信號量的PV操作外側
P(mutex); // 父親放水果時兒女不能取
// 放水果的操作
if (fruit == apple)
V(apple);
else if (fruit == orange)
V(orange);
V(mutex);
}
對於兒子進程Son():
while(1)
{
P(orange);
P(mutex); // 兒女取時父親不能放水果
// 取橘子操作
V(mutex);
V(empty_num); // 取完橘子,可以放水果的個數+1
}
對於女兒進程Daughter():
while(1)
{
P(apple);
P(mutex);
// 取蘋果操作
V(mutex);
V(empty_num); // 取完蘋果,可以放水果的個數+1
}