首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux过程协作-一个小例子

2013-04-07 
linux进程协作-一个小例子爸爸给女儿和儿子喂水果。爸爸随机挑选橘子或者苹果,将橘子剥皮或者将苹果削皮放

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)

 

代码:

 

热点排行