See: http://docs.eiffel.com/book/solutions/single-element-producer-consumer