lionel chang

导航

生产者和消费者问题

生产者-消费者是一个典型的同步问题。生产者将生产出来的产品放到缓冲区中,消费者从缓冲区取出产品进行消费,每次只能有一个人对缓冲区进行操作。生产者生产产品时要保证缓冲区未满,消费者消费产品时要保证缓冲区未空。代码在https://files.cnblogs.com/woshizyl/producer_consumer.zip

遇到的问题:

1.init_MUTEX()和init_MUTEX_LOCKED编译出错

解决方法:在网上查了一下这是比较早的内核版本支持的初始化方式,可分别用以下方式替换:

init_MUTEX(&sem_producer)替换为:sema_init(&sem_producer,1);
init_MUTEX_LOCKED(&sem_consumer) 替换为:sema_init(&sem_consumer,0);

其实可以看一下,init_MUTEX()和init_MUTEX_LOCKED()的定义,最终会被替换右边的形式。

2.makefile文件有问题

解决方法:找同学看了一下,原来是“=”后多写了空格,现在将makefile文件保存起来,以后直接修改一下就可以了。

3.最后一个生产的产品不会被消费

解决方法:将消费者的线程中的语句顺序更改一下即可。

posted on 2012-11-27 16:37  woshizyl  阅读(472)  评论(0编辑  收藏  举报