24 September 2012

Solution for producer consumer problem by using semaphore 
Provided by  Seevendra dwivedi


#include<stdio.h>
#include<conio.h>
#define max 5
int n,produced,consumed,buffer[max];
int result,i;
int main()
{
clrscr();
produced=0;
consumed=1;
result=0;
i=0;
while(1)
{
printf("Enter the choice\n");
printf("1.Producer 2.Consumer 3.Exit\n");
scanf("%d",&n);
if(n==3)
exit(0);
else if(n==1)
producer(consumed,buffer[i]);
else if(n==2)
consumer(produced,buffer[i]);
else
exit(0);
}
}
producer(int consumed,int result)
{
if((consumed==1)&&(i>=0))
{
result=result+1;
i++;
buffer[i]=result;
produced=1;
printf("Produced bufffer=%d\n",buffer[i]);
consumed=0;
return(produced,result);
}
else
printf("Buffer still to be consumed\n");
return 0;
}
consumer(int produced,int result)
{
if((produced==1)&&(i>=0))
{
consumed=1;
printf("Consumed buffer=%d\n",buffer[i]);
produced=0;
i--;
return(consumed,result);
}