Sha256: 6f60e9f0beffbf68662254262acce2fa4ad8281123c0283f5061612984b98d68
Contents?: true
Size: 565 Bytes
Versions: 43
Compression:
Stored size: 565 Bytes
Contents
module Metanorma class WorkersPool def initialize(workers) @workers = workers @queue = SizedQueue.new(@workers) @threads = Array.new(@workers) do Thread.new do catch(:exit) do loop do job, args = @queue.pop job.call *args end end end end end def schedule(*args, &block) @queue << [block, args] end def shutdown @workers.times do schedule { throw :exit } end @threads.map(&:join) end end end
Version data entries
43 entries across 43 versions & 1 rubygems