class PromisePool::Queue

Attributes

condv[R]
queue[R]

Public Class Methods

new() click to toggle source
# File lib/promise_pool/queue.rb, line 6
def initialize
  @queue = []
  @condv = ConditionVariable.new
end

Public Instance Methods

<<(task) click to toggle source
# File lib/promise_pool/queue.rb, line 15
def << task
  queue << task
  condv.signal
end
clear() click to toggle source
# File lib/promise_pool/queue.rb, line 29
def clear
  queue.clear
end
pop(mutex, timeout=60) click to toggle source
# File lib/promise_pool/queue.rb, line 20
def pop mutex, timeout=60
  if queue.empty?
    condv.wait(mutex, timeout)
    queue.shift || lambda{ |_| false } # shutdown idle workers
  else
    queue.shift
  end
end
size() click to toggle source
# File lib/promise_pool/queue.rb, line 11
def size
  @queue.size
end