Producer–Consumer C Program
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
int buffer[MAX];
int produced = 0;
int consumed = 1;
int i = 0;
/* Function declarations */
void producer(void);
void consumer(void);
int main()
{
int n;
while (1)
{
printf("\n");
printf("Enter the choice\n");
printf("1. Producer\n");
printf("2. Consumer\n");
printf("3. Exit\n");
printf("Enter your choice: ");
scanf("%d", &n);
if (n == 3)
{
exit(0);
}
else if (n == 1)
{
producer();
}
else if (n == 2)
{
consumer();
}
else
{
printf("Invalid choice\n");
}
}
return 0;
}
/* Producer function */
void producer(void)
{
int result;
if ((consumed == 1) && (i < MAX))
{
result = i + 1;
buffer[i] = result;
printf("Produced buffer = %d\n", buffer[i]);
i++;
produced = 1;
consumed = 0;
}
else
{
printf("Buffer still to be consumed\n");
}
}
/* Consumer function */
void consumer(void)
{
if ((produced == 1) && (i > 0))
{
i--;
printf("Consumed buffer = %d\n", buffer[i]);
produced = 0;
consumed = 1;
}
else
{
printf("Buffer still to be produced\n");
}
}
0 Comments