生产者和消费者问题
生产者-消费者是一个典型的同步问题。生产者将生产出来的产品放到缓冲区中,消费者从缓冲区取出产品进行消费,每次只能有一个人对缓冲区进行操作。生产者生产产品时要保证缓冲区未满,消费者消费产品时要保证缓冲区未空。代码在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.最后一个生产的产品不会被消费
解决方法:将消费者的线程中的语句顺序更改一下即可。