The following code is an incorrect implementation of the bou…
The following code is an incorrect implementation of the bounded-buffer single producer and single consumer program. Pick three answers that are *CORRECT* in fixing the program to work even when the consumer and producer threads run simultaneously. #include #include #include #include #define BUFFER_SIZE 10#define COUNT 100int buffer;int in=0;int out=0;void enqueue(int data) { buffer=data; in = (in + 1) % BUFFER_SIZE;}int dequeue() { int data; data = buffer; out = (out + 1) % BUFFER_SIZE; return data;}void *producer(void *dummy) { int i=0; int count = (int) dummy; while(i < count) { enqueue(i++); printf("Producing value %d\n",i); } return NULL;}void *consumer(void *dummy) { int data; int count = (int) dummy; int i = 0; while(i < count) { data=dequeue(); printf("Consuming value %d\n",data); i++; } return NULL;}int main() { pthread_t tid; pthread_create(&tid,NULL,producer,(void *)COUNT); consumer((void *)COUNT); pthread_join(tid,NULL); return 0;}