The producer/consumer pattern