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 threads to communicate with each other using a ProducerConsumer approach:
The Producer loop:
while
pthreadmutexlock&mutex; Lock the mutex before checking if the buffer has data
while count SIZE Buffer is full; Wait for signal that space is available
pthreadcondwait&spaceavailable, &mutex;
putitemvalue; Space is free, add an item! This will increment int count
pthreadmutexunlock&mutex; Unlock the mutex
pthreadcondsignal&hasdata; Signal consumer that the buffer is no longer empty
The Consumer loop:
while
pthreadmutexlock&mutex; Lock the mutex before checking if the buffer has data
while count Buffer is empty. Wait for signal that the buffer has data
pthreadcondwait&hasdata, &mutex;
value getitem; There's an item, get it This will decrement int count
pthreadmutexunlock&mutex; Unlock the mutex
pthreadcondsignal&spaceavailable; 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 to 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 "myCond and "myCond
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 is created:
CONSUMER THREAD CREATED
When myCount changes value:
myCount:
Example:
myCount:
When myMutex is unlocked:
: myMutex unlocked
Example:
CONSUMER: myMutex unlocked
When myMutex is locked:
: myMutex locked
Example:
CONSUMER: myMutex locked
When myCond or myCond has pthreadcondwait called on it:
: waiting on
Example:
PRODUCER: waiting on myCond
When myCond or myCond has pthreadcondsignal called on it:
: signaling
Example:
CONSUMER: signaling myCond
When your program ends:
PROGRAM END
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
