进程同步水果问题

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