Sha256: 8f52160a6904868b119640ea7045c8d3bda769600c2c2ffabbaca266c230546e

Contents?: true

Size: 491 Bytes

Versions: 1

Compression:

Stored size: 491 Bytes

Contents

require 'thread'

class PriorityQueue
  def initialize
    clear
  end

  def clear
    @queues = {}
  end

  def [](value)
    @queues[value] ||= Queue.new
  end

  def priorities
    @queues.keys.sort
  end

  def shift
    priorities.each do |key|
      if not self[key].empty?
        return self[key].shift(true)
      else
        @queues.delete(key)
      end
    end
    nil
  end
  
  def size
    @queues.values.inject(0) do |size, queue|
      size + queue.size
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
priority_queue-0.1.0 lib/priority_queue.rb