Question: The program must use these 2 threads to communicate with each other using a Producer - Consumer approach: The Producer loop: while ( 1 )

The program must use these 2 threads to communicate with each other using a Producer-Consumer approach:
The Producer loop:
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:
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".
Your program must output lines that contain the following text exactly as written, at the following times. No other lines are allowed to be in the output:
When your program begins:
PROGRAM START
When thread 2 is created:
CONSUMER THREAD CREATED
When myCount changes value:
myCount: ->
Example:
myCount: 1->2
When myMutex is unlocked:
: myMutex unlocked
Example:
CONSUMER: myMutex unlocked
When myMutex is locked:
: myMutex locked
Example:
CONSUMER: myMutex locked
When myCond1 or myCond2 has pthread_cond_wait() called on it:
: waiting on
Example:
PRODUCER: waiting on myCond1
When myCond1 or myCond2 has pthread_cond_signal() called on it:
: signaling
Example:
CONSUMER: signaling myCond1
When your program ends:
PROGRAM END

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!