Object
# File lib/parallel.rb, line 78 def each_with_index(&block) if producer? loop do item, index = self.next break unless index yield(item, index) end else @items.each_with_index(&block) end end
# File lib/parallel.rb, line 90 def next if producer? # - index and item stay in sync # - do not call lambda after it has returned Stop item, index = @mutex.synchronize do return if @stopped item = @lambda.call @stopped = (item == Parallel::Stop) return if @stopped [item, @index += 1] end else index = @mutex.synchronize { @index += 1 } return if index >= size item = @items[index] end [item, index] end
# File lib/parallel.rb, line 113 def pack(item, index) producer? ? [item, index] : index end
Generated with the Darkfish Rdoc Generator 2.