Sha256: e69af75da8dca1b7f65058f8304c701acba0d03fefaa3ed8b54de5d0514a5e9e

Contents?: true

Size: 486 Bytes

Versions: 46

Compression:

Stored size: 486 Bytes

Contents

require 'thread'
module BooticCli
  class WorkerPool
    def initialize(how_many)
      @how_many = how_many
      @queue = Queue.new
    end

    def schedule(&block)
      @queue.push block
    end

    def start
      threads = @how_many.times.map do |i|
        Thread.new do
          begin
            while job = @queue.pop(true)
              job.call
            end
          rescue ThreadError
          end
        end
      end
      threads.map(&:join)
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
bootic_cli-1.2.0 lib/bootic_cli/worker_pool.rb
bootic_cli-1.1.0 lib/bootic_cli/worker_pool.rb
bootic_cli-1.0.0 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.6 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.5 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.4 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.3 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.2 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.1 lib/bootic_cli/worker_pool.rb
bootic_cli-0.9.0 lib/bootic_cli/worker_pool.rb
bootic_cli-0.8.2 lib/bootic_cli/worker_pool.rb
bootic_cli-0.8.1 lib/bootic_cli/worker_pool.rb
bootic_cli-0.8.0 lib/bootic_cli/worker_pool.rb
bootic_cli-0.7.3 lib/bootic_cli/worker_pool.rb
bootic_cli-0.7.2 lib/bootic_cli/worker_pool.rb
bootic_cli-0.7.1 lib/bootic_cli/worker_pool.rb
bootic_cli-0.7.0 lib/bootic_cli/worker_pool.rb
bootic_cli-0.6.7 lib/bootic_cli/worker_pool.rb
bootic_cli-0.6.6 lib/bootic_cli/worker_pool.rb
bootic_cli-0.6.5 lib/bootic_cli/worker_pool.rb