Method: ConcurrentIterable::Iterator#map
- Defined in:
- lib/concurrent_iterable/iterator.rb
#map(&block) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/concurrent_iterable/iterator.rb', line 19 def map(&block) result = Concurrent::Array.new(iterable.length) iterable.each_slice(concurrency).each.with_index do |group, group_index| group.length.times.map do |index| Concurrent::Promises.future(executor) do result_index = group_index * concurrency + index result[result_index] = yield group[index] end end.each(&:wait!) end result end |