Question
Can someone help create this program for Linux.

Part 3. IPC (InterProcess Communication) Programming In Part 3, you are asked to develop a multithreaded program and a Makefi
0 0
Add a comment Improve this question Transcribed image text
Answer #1

# include <stdio.h>
# include <pthread.h>
# include <stdlib.h>
# define BufferSize 10 //defining buffer size

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); //allocating buffer

pthread_create(&ptid,NULL,Producer,NULL);//creating producer thread
pthread_create(&ctid,NULL,Consumer,NULL);//creating consumer thread

pthread_join(ptid,NULL);
pthread_join(ctid,NULL);


return 0;
}

//Producer Code
void *Producer()
{
for(;;)
{
pthread_mutex_lock(&mVar);
if(BufferIndex==BufferSize)
{
printf("Producer found that buffer is full and waiting for the consumer to consume");
pthread_cond_wait(&Buffer_Not_Full,&mVar);//producer thread will wait as buffer is full
}
BUFFER[BufferIndex++]='@';
printf("Producer produced one item : %d \n",BufferIndex);
pthread_mutex_unlock(&mVar);
pthread_cond_signal(&Buffer_Not_Empty);
}

}

//Consumer Code
void *Consumer()
{
for(;;)
{
pthread_mutex_lock(&mVar);
if(BufferIndex==-1)
{
printf("Consumer found that the buffer is empty and waiting for the producer to produce");
pthread_cond_wait(&Buffer_Not_Empty,&mVar);//consumer thread will wait as buffer is empty
}
printf("Consumer consumed one item : %d \n",BufferIndex--);
pthread_mutex_unlock(&mVar);
pthread_cond_signal(&Buffer_Not_Full);
}
}




//output :
roducer produced one item : l Producer produced one item : 2 Producer produced one item 3 Producer produced one item : 4 Prod

//for makefile you can use :
/*

ProducerConsumerMake : ProducerConsumer.c
gcc -o ProducerConsumerMake ProducerConsumer.c -I

*/

Add a comment
Know the answer?
Add Answer to:
Can someone help create this program for Linux. Part 3. IPC (InterProcess Communication) Programming In Part...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT