Class: S3Website::Parallelism

Inherits:
Object
  • Object
show all
Defined in:
lib/s3_website/parallelism.rb

Class Method Summary collapse

Class Method Details

.each_in_parallel_or_sequentially(items, config, &operation) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/s3_website/parallelism.rb', line 3

def self.each_in_parallel_or_sequentially(items, config, &operation)
  if ENV['disable_parallel_processing']
    items.each do |item|
      operation.call item
    end
  else
    slice_size = config['concurrency_level'] || DEFAULT_CONCURRENCY_LEVEL
    items.each_slice(slice_size) { |items|
      threads = items.map do |item|
        Thread.new(item) { |item|
          operation.call item
        }
      end
      threads.each(&:join)
    }
  end
end