class Aquatone::ThreadPool
Attributes
jobs[R]
pool[R]
size[R]
Public Class Methods
new(size)
click to toggle source
# File lib/aquatone/thread_pool.rb, line 5 def initialize(size) @size = size.to_i @jobs = Queue.new @pool = Array.new(size) do Thread.new do catch(:exit) do loop do job, args = @jobs.pop job.call(*args) end end end end end
Public Instance Methods
schedule(*args, &block)
click to toggle source
# File lib/aquatone/thread_pool.rb, line 20 def schedule(*args, &block) @jobs << [block, args] end
shutdown()
click to toggle source
# File lib/aquatone/thread_pool.rb, line 24 def shutdown @size.times do schedule { throw :exit } end @pool.map(&:join) end