class Pool
Simple thread pool [1].
Public Class Methods
new(size)
click to toggle source
# File lib/sequenceserver/pool.rb, line 23 def initialize(size) @size = Integer size @jobs = Queue.new @pool = Array.new(@size) do |i| Thread.new do Thread.current[:id] = i catch(:exit) do loop do job, args = @jobs.pop job.call(*args) end end end end end
Public Instance Methods
queue(*args, &block)
click to toggle source
# File lib/sequenceserver/pool.rb, line 39 def queue(*args, &block) @jobs << [block, args] end
shutdown()
click to toggle source
# File lib/sequenceserver/pool.rb, line 43 def shutdown @size.times do queue { throw :exit } end @pool.map(&:join) end