Module: KubernetesDeploy::Concurrency
- Defined in:
- lib/kubernetes-deploy/concurrency.rb
Constant Summary collapse
- MAX_THREADS =
8
Class Method Summary collapse
Class Method Details
.split_across_threads(all_work, &block) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/kubernetes-deploy/concurrency.rb', line 6 def self.split_across_threads(all_work, &block) return if all_work.empty? raise ArgumentError, "Block of work is required" unless block_given? slice_size = ((all_work.length + MAX_THREADS - 1) / MAX_THREADS) threads = [] all_work.each_slice(slice_size) do |work_group| threads << Thread.new { work_group.each(&block) } end threads.each(&:join) end |