Parallel Processing Assignment 1


 Solve the producer-consumer problem using thread


# include <stdio.h>
# include <pthread.h>
# define BufferSize 10

void *Producer();
void *Consumer();
int BufferIndex=0;
char *BUFFER;
pthread_cond_t Buffer_Not_Full=PTHREAD_COND_INITIALIZER;
pthread_cond_t Buffer_Not_Empty=PTHREAD_COND_INITIALIZER;
pthread_mutex_t mVar=PTHREAD_MUTEX_INITIALIZER;

int main()
{             
pthread_t ptid,ctid;
BUFFER=(char *) malloc(sizeof(char) * BufferSize);                                         
pthread_create(&ptid,NULL,Producer,NULL);
pthread_create(&ctid,NULL,Consumer,NULL);
pthread_join(ptid,NULL);
pthread_join(ctid,NULL);
return 0;
}
void *Producer()
{             
for(;;)
{
pthread_mutex_lock(&mVar);
if(BufferIndex==BufferSize)
{                             
pthread_cond_wait(&Buffer_Not_Full,&mVar);
}                                             
BUFFER[BufferIndex++]='@';
printf("Produce : %d \n",BufferIndex);
pthread_mutex_unlock(&mVar);
pthread_cond_signal(&Buffer_Not_Empty);     
}             
}
void *Consumer()
{
for(;;)
{
pthread_mutex_lock(&mVar);
if(BufferIndex==-1)
{                                             
pthread_cond_wait(&Buffer_Not_Empty,&mVar);        
}                                                             
printf("Consume : %d \n",BufferIndex--);                           
pthread_mutex_unlock(&mVar);                            
pthread_cond_signal(&Buffer_Not_Full);                                                           
}             
}
 Output
[08ce55@localhost pp-tw4]
$ cc -o Prog08 -lpthread Prog08.c
[08ce55@localhost pp-tw4]
$ ./Prog08
Produce : 1
Produce :2
Produce :3
Produce :4
Produce :5
Produce :6
Produce :7
Produce :8
Produce :9
Produce :10
Consume :10
Consume :9
Consume :8
Consume :7
Consume :6
Consume :5
Consume :4
Consume :3
Consume :2
Consume :1
Consume :0
Produce : 0
Produce : 1
Produce : 2
Produce : 3
Produce : 4
Produce : 5
Produce : 6
Produce : 7
Produce : 8
Produce : 9
Produce : 10
Consume : 10
Consume : 9
Consume : 8
Consume : 7
Consume : 6
Consume : 5
Consume : 4
Consume : 3
Consume : 2
Consume : 1
Consume 0
Produce : 0
Produce : 1
 

 >>Click Here To Download Word File<<

Related Posts Plugin for WordPress, Blogger...

Engineering material

GTU IDP/ UDP PROJECT

GTU IDP/ UDP PROJECT

Patel free software download

  © Blogger templates The Professional Template by Ourblogtemplates.com 2008

Back to TOP