26 lines
579 B
Ruby
26 lines
579 B
Ruby
|
module Oga
|
||
|
module ThreadingHelpers
|
||
|
##
|
||
|
# Iterates over the enumerable using a separate thread for every value. This
|
||
|
# method waits for all threads to complete before returning.
|
||
|
#
|
||
|
# @example
|
||
|
# each_in_parallel([10, 20]) do |value|
|
||
|
# puts value
|
||
|
# end
|
||
|
#
|
||
|
# @param [Enumerable] enumerable
|
||
|
# @yieldparam [Mixed]
|
||
|
#
|
||
|
def each_in_parallel(enumerable)
|
||
|
threads = []
|
||
|
|
||
|
enumerable.each do |value|
|
||
|
threads << Thread.new { yield value }
|
||
|
end
|
||
|
|
||
|
threads.each(&:join)
|
||
|
end
|
||
|
end # ThreadingHelpers
|
||
|
end # Oga
|