读书人

linux过程协作-一个小例子

发布时间: 2013-04-07 12:50:11 作者: rapoo

linux进程协作-一个小例子

爸爸给女儿和儿子喂水果。爸爸随机挑选橘子或者苹果,将橘子剥皮或者将苹果削皮放在盘子中,剥皮的速度比较快,而削皮的时间比较慢。女儿只吃橘子,儿子只吃苹果(当然我们假设女儿和儿子永远也吃不饱)。盘子只能装下3个水果。儿子吃得比较快,女儿吃得比较慢。

编程模拟该过程:

简单分析

信号量:

int accessplate = 1; //表示访问盘子的信号量

int apple = 0; //苹果个数

int orange = 0; //橘子

int emptyplates = 3; //空盘子

Father:

P(emptyplates);

produce a fruit

if( is apple )

then

P(accessplate)

put apple in

V(apple)

V(accessplate)

else

P(accessplate)

put orange in

V(orange)

V(accessplate)

Boy:

P(apple)

P(accessplate)

get an apple

eat an apple

V(emptyplates)

V(accessplate)

Girl:

P(orange)

P(accessplate)

get an orange

eat an orange

V(emptyplates)

V(accessplate)

代码:

读书人网 >UNIXLINUX

热点推荐