class WorkersPool

Workers poll.

Attributes

nb_hits[RW]

Public Class Methods

new(num_workers = 2) click to toggle source
# File lib/isobib/workers_pool.rb, line 7
def initialize(num_workers = 2)
  @num_workers = num_workers < 2 ? 2 : num_workers
  @queue = SizedQueue.new(num_workers * 2)
  @result = []
  @nb_hits = 0
end

Public Instance Methods

<<(item) click to toggle source
# File lib/isobib/workers_pool.rb, line 29
def <<(item)
  @queue << item
  self
end
end() click to toggle source
# File lib/isobib/workers_pool.rb, line 34
def end
  @num_workers.times { @queue << :END }
end
result() click to toggle source
# File lib/isobib/workers_pool.rb, line 24
def result
  @threads.each(&:join)
  @result
end
size() click to toggle source
# File lib/isobib/workers_pool.rb, line 38
def size
  @result.size
end
worker() { |item| ... } click to toggle source
# File lib/isobib/workers_pool.rb, line 14
def worker(&block)
  @threads = Array.new @num_workers do
    Thread.new do
      until (item = @queue.pop) == :END
        @result << yield(item) if block
      end
    end
  end
end