def queue(action, *args)
      raise PoolClosed.new("Pool #{self} is currently closed") if pool_closed?
      raise ArgumentError.new('Expecting block') unless action.is_a?(Proc)
      @lock.synchronize do
        @queue << [action, args]
        create_thread
      end
    end
def queue(action, *args)
      raise PoolClosed.new("Pool #{self} is currently closed") if pool_closed?
      raise ArgumentError.new('Expecting block') unless action.is_a?(Proc)
      @lock.synchronize do
        @queue << [action, args]
        create_thread
      end
    end
action:: proc to be executed
 Add a new proc/lambda to be executed
 TODO: When using a prio queue for action holding, queue items
 based on thread ID