進程同步水果問題

設置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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章