Question: Write a producer-consumer program based on Figure 5.16, using semaphores and a bounded buffer, and the program from Pgm1 in which the produce function is
Write a producer-consumer program based on Figure 5.16, using semaphores and a bounded buffer, and the program from Pgm1 in which the produce function is to calculate the sum of one thousand uniform random numbers on the interval [0,1) divided by five hundred. The producer is required to produce precisely one million values. Have ten consumer Pthreads which consume one sum at a time which is added it to their individual partial totals. The final step of the main is to output the output the ten partial totals. Both producer and consumer require modifications to account for the limited production. Pseudocode for the produce and consume procedures is provided below. Does the operating system provide an equal allotment of sums to each consumer thread? What does that indicate?

*program boundedbuffer const int sizeofbuffer* buffer size* semaphore s 1, n= 0, e= sizeofbuffer; void producer() while (true) produce)i semWait(e) semWait(s); append(); semSignal(s); semSignal (n) void consumer () while (true) f semWait(n); semWait(s); take)i semSignal(s); semSignal (e); consume void main() parbegin (producer, consumer); Figure 5.16 A Solution to the Bounded-Buffer Producer/Consumer Problem Using Semaphores *program boundedbuffer const int sizeofbuffer* buffer size* semaphore s 1, n= 0, e= sizeofbuffer; void producer() while (true) produce)i semWait(e) semWait(s); append(); semSignal(s); semSignal (n) void consumer () while (true) f semWait(n); semWait(s); take)i semSignal(s); semSignal (e); consume void main() parbegin (producer, consumer); Figure 5.16 A Solution to the Bounded-Buffer Producer/Consumer Problem Using Semaphores
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
