- Producer and consumer
- We have one buffer class instance (eg. int[ ]
array) into which multiple producers inputs data, from which consumers
‘consumes’ this data character by character.
- So the buffer class has at least following
methods:
- void addNumber( int iNumber ) ,
which adds new number into the array.
- int useNumber() , which removes one number from
array
and returns/shows it
- Lets make every producer and consumer as thread of
its own. Create following program:
- Only one thread at time can use the array
- If array is full, producer waits for free place to
add new number
- If array is empty, consumer waits for numbers to be
‘consumed’
- Test this program with diffirent kind of cases (1
and 2 producers, 8 and 4 consumers, etc.)
Solution improvement
- Improve the solution to be as efficient as possible
like so:
- Threads do not make ‘busy looping’ (testing) all the
time, for free place to add or data to be consumed.
This way funtions do not waste processor time.
- When free space or data is available, waiting thread
can proceed immediately.
Back