class WorkersPool
Workers poll.
Attributes
nb_hits[RW]
Public Class Methods
new(num_workers = 2)
click to toggle source
# File lib/gbbib/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/gbbib/workers_pool.rb, line 29 def <<(item) @queue << item self end
end()
click to toggle source
# File lib/gbbib/workers_pool.rb, line 34 def end @num_workers.times { @queue << :END } end
result()
click to toggle source
# File lib/gbbib/workers_pool.rb, line 24 def result @threads.each(&:join) @result end
size()
click to toggle source
# File lib/gbbib/workers_pool.rb, line 38 def size @result.size end
worker() { |item| ... }
click to toggle source
# File lib/gbbib/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