n We assume first an unbounded buffer
consisting of a linear array of elements
n in points to the next item to be produced
n out points to the next item to be consumed