n Monitor needs to hold the buffer:
u buffer: array[0..k-1] of items;
n needs two condition variables:
u notfull: true when buffer is not full
u notemty: true when buffer is not empty
n needs buffer pointers and counts:
u nextin: points to next item to be appended
u nextout: points to next item to be taken
u count: holds the number of items in buffer