Question: The program must use these 2 threads to communicate with each other using a Producer - Consumer approach. The producer loop: ( w / condition

The program must use these 2 threads to communicate with each other using a Producer-Consumer approach.
The producer loop: (w/ condition variable)
while (1)
{
pthread_mutex_lock(&mutex); // Lock the mutex before checking if the buffer has data
while (count == SIZE)// Buffer is full; Wait for signal that space is available
pthread_cond_wait(&space_available, &mutex);
put_item(value); // Space is free, add an item! This will increment int count
pthread_mutex_unlock(&mutex); // Unlock the mutex
pthread_cond_signal(&has_data); // Signal consumer that the buffer is no longer empty
}
The consumer loop: (w/ condition variable)
while (1)
{
pthread_mutex_lock(&mutex); // Lock the mutex before checking if the buffer has data
while (count ==0)// Buffer is empty. Wait for signal that the buffer has data
pthread_cond_wait(&has_data, &mutex);
value = get_item(); // There's an item, get it! This will decrement int count
pthread_mutex_unlock(&mutex); // Unlock the mutex
pthread_cond_signal(&space_available); // Signal that the buffer has space
}
Both threads must share one mutex and two condition variables to control and protect the counting of a number. The number must count from a starting value of 0 to 10, by ones, at which point the program will end.
You get to decide which parts of the incrementation and printing go in each thread.
Your variables must be named as follows:
Your mutex must be named "myMutex".
Your two conditions variables must be named "myCond1" and "myCond2".
Your counting variable must be named "myCount".

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!