class Sixpool

Public Class Methods

new(size=6) click to toggle source
# File lib/sixpool.rb, line 4
def initialize(size=6)
  @size = 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

attack(*args, &block) click to toggle source
# File lib/sixpool.rb, line 20
def attack(*args, &block)
  @jobs << [block, args]
end
gg() click to toggle source
# File lib/sixpool.rb, line 24
def gg
  @size.times do
    attack { throw :exit }
  end
  @pool.map(&:join)
end