Sha256: 059234be5297a8df3d65bc57c9b90b2ffe0ce5bc49340721b64e4fdc5dbcc7dd
Contents?: true
Size: 1017 Bytes
Versions: 2
Compression:
Stored size: 1017 Bytes
Contents
module Workers class Pool include Workers::Helpers DEFAULT_POOL_SIZE = 20 def initialize(options = {}) @logger = Workers::LogProxy.new(options[:logger]) @size = options[:size] || Workers::Pool::DEFAULT_POOL_SIZE @worker_class = options[:worker_class] || Workers::Worker @input_queue = Queue.new @workers = [] @size.times { @workers << @worker_class.new(:input_queue => @input_queue) } end def enqueue(command, data = nil) @input_queue.push(Event.new(command, data)) return nil end def perform(&block) enqueue(:perform, block) return nil end def shutdown(&block) @size.times { enqueue(:shutdown, block) } return nil end def join(max_wait = nil) return @workers.map { |w| w.join(max_wait) } end def dispose shutdown join return nil end def inspect return "#<#{self.class.to_s}:0x#{(object_id << 1).to_s(16)} size=#{@size}>" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
workers-0.0.9 | lib/workers/pool.rb |
workers-0.0.8 | lib/workers/pool.rb |