本文共 2684 字,大约阅读时间需要 8 分钟。
生产者消费者问题c语言
Here you will learn about producer consumer problem in C.
在这里,您将了解C语言中的生产者消费者问题。
Producer consumer problem is also known as bounded buffer problem. In this problem we have two processes, producer and consumer, who share a fixed size buffer. Producer work is to produce data or items and put in buffer. Consumer work is to remove data from buffer and consume it. We have to make sure that producer do not produce data when buffer is full and consumer do not remove data when buffer is empty.
生产者使用者问题也称为有界缓冲区问题。 在这个问题中,我们有两个过程,生产者和消费者,它们共享一个固定大小的缓冲区。 生产者的工作是生产数据或项目并放入缓冲区。 消费者的工作是从缓冲区中删除数据并使用它。 我们必须确保当缓冲区已满时生产者不会产生数据,而当缓冲区为空时使用者不会删除数据。
Also Read:
另请参阅:
The producer should go to sleep when buffer is full. Next time when consumer removes data it notifies the producer and producer starts producing data again. The consumer should go to sleep when buffer is empty. Next time when producer add data it notifies the consumer and consumer starts consuming data. This solution can be achieved using semaphores.
当缓冲区已满时,生产者应进入睡眠状态。 下次消费者删除数据时,它将通知生产者,然后生产者再次开始生产数据。 当缓冲区为空时,消费者应入睡。 生产者下一次添加数据时,会通知消费者,消费者开始使用数据。 可以使用信号量实现此解决方案。
Below is the program to implement this problem.
下面是实现此问题的程序。
#include#include int mutex=1,full=0,empty=3,x=0; int main(){ int n; void producer(); void consumer(); int wait(int); int signal(int); printf("\n1.Producer\n2.Consumer\n3.Exit"); while(1) { printf("\nEnter your choice:"); scanf("%d",&n); switch(n) { case 1: if((mutex==1)&&(empty!=0)) producer(); else printf("Buffer is full!!"); break; case 2: if((mutex==1)&&(full!=0)) consumer(); else printf("Buffer is empty!!"); break; case 3: exit(0); break; } } return 0;} int wait(int s){ return (--s);} int signal(int s){ return(++s);} void producer(){ mutex=wait(mutex); full=signal(full); empty=wait(empty); x++; printf("\nProducer produces the item %d",x); mutex=signal(mutex);} void consumer(){ mutex=wait(mutex); full=wait(full); empty=signal(empty); printf("\nConsumer consumes item %d",x); x--; mutex=signal(mutex);}
Output
输出量
1.Producer 2.Consumer 3.Exit Enter your choice:1
1. 生产者2. 消费者 3. 退出 输入您的选择:1
Producer produces the item 1 Enter your choice:2
生产者生产项目1 输入您的选择:2
Consumer consumes item 1 Enter your choice:2 Buffer is empty!! Enter your choice:1
消费者消费项目1 输入您的选择:2 缓冲区为空! 输入您的选择:1
Producer produces the item 1 Enter your choice:1
生产者生产项目1 输入您的选择:1
Producer produces the item 2 Enter your choice:1
生产者生产项目2 输入您的选择:1
Producer produces the item 3 Enter your choice:1 Buffer is full!! Enter your choice:3
生产者生产项目3 输入您的选择:1 缓冲区已满! 输入您的选择:3
翻译自:
生产者消费者问题c语言
转载地址:http://hrggb.baihongyu.com/