posts - 17,  comments - 14,  trackbacks - 0

      生产者-消费者(producer-consumer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。

      这样应该是生产者生产一个产品,然后消费者取走一个产品,然后再生产、再消费,这个看似很理所当然的逻辑在现实中是必然的,但是在程序里却出现了问题。a:生产者生产了很多消费者却没有取,b:生产这还没有生产完一个完整的产品消费者却已经取走了好几次了,这样取走的产品当然是不合格的。

      下面就用生产和消费鞋子为例,看看程序是怎么运行的吧.. .. ..

Demo01

结果:

image

      从结果中可以看到,第一次取时已经生产完一双男鞋,女鞋还没有生产完就取走了女鞋,第二次到第四次消费都是男鞋,看来是要么生产的太多了,没有取走,要么就是取的太快,只生产了一双男鞋却取了四次。

      这样的程序显然是不符合实际的,所以就要加以改进。

      应该是生产时,生产者进入车间并把车间的门上锁,生产一双后生产者出来,消费者进入到车间并把车间门上锁,取到鞋子后出来,这样车间里只有一个人,要么生产者要么消费者,这样就可以保证生产合格的产品。

改进的程序:

Demo02

运行结果:

image

posted on 2010-11-12 23:30 Mineralwasser 阅读(241) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(1)

文章档案(21)

搜索

  •  

最新评论

阅读排行榜

评论排行榜