class ItemQueue BATCH_SIZE = 25 def initialize(items = []) @mutex = Mutex.new @queue = items end def push(item) @mutex.synchronize { @queue << item } end def pop_batch @mutex.synchronize { batch = @queue[0...BATCH_SIZE] @queue = @queue[BATCH_SIZE..-1] || [] batch } end def length @mutex.synchronize { @queue.length } end end