Added code to suspend threads if buffer is low
Added timeout for waiting threads
ImageProducer will now fetch batches of work