EventMachine Priority Queue

Install

[sudo] gem install em-priority-queue

Usage

Basic

@q = EM::PriorityQueue.new

responses = []
  EM.run do


    @q.push("Mike", 20)
    @q.push("Alex", 21)
    @q.push("Bob", 22)
    @q.push("Tim", 18)

    4.times do
      @q.pop do |e|
        responses << e
        EM.stop if responses.size == 4
      end
    end
  end

  responses[0] # Bob
  responses[1] # Alex
  responses[2] # Mike
  responses[3] # Tim

Custom Priority

@q = EM::PriorityQueue.new {|x,y| x < y}

responses = []
  EM.run do


    @q.push("Mike", 20)
    @q.push("Alex", 21)
    @q.push("Bob", 22)
    @q.push("Tim", 18)

    4.times do
      @q.pop do |e|
        responses << e
        EM.stop if responses.size == 4
      end
    end
  end

  responses[0] # Tim
  responses[1] # Mike
  responses[2] # Alex
  responses[3] # Bob

To see all examples/cases, see the spec file.