Sha256: aa0f018b3ce188d9d1f43911a67d7e98619c700305156c19087e5340526c14c8
Contents?: true
Size: 606 Bytes
Versions: 14
Compression:
Stored size: 606 Bytes
Contents
# frozen_string_literal: true module ShopifyCLI class ThreadPool attr_reader :errors def initialize(pool_size: 10) @jobs = Queue.new @pool = Array.new(pool_size) { spawn_thread } end def schedule(job) @jobs << job end def shutdown @pool.size.times do schedule(-> { throw(:stop_thread) }) end @pool.map(&:join) ensure @jobs.close end private def spawn_thread Thread.new do catch(:stop_thread) do loop do @jobs.pop.call end end end end end end
Version data entries
14 entries across 14 versions & 1 rubygems