class Enumerator
Public Instance Methods
fibril(*guard_names, &block)
click to toggle source
# File lib/fibril/core.rb, line 234 def fibril(*guard_names, &block) context = self Kernel.fibril(*guard_names){ e = Enumerator.new do |enum| context.each do |*elm| result = enum.yield(*elm) tick result end end e.each(&block) } end
n_fibrils(*guard_names, n, &block)
click to toggle source
# File lib/fibril/core.rb, line 248 def n_fibrils(*guard_names, n, &block) context = self guards = n.times.map do |i| Kernel.fibril{ e = Enumerator.new do |enum| context.each.with_index do |elm, index| next unless ((index - i) % n).zero? result = enum.yield(*elm) tick result end end e.each(&block) } end Kernel.fibril(*guard_names){ all_results = await(*guards) length = all_results.max{|x| x.length}.length length.times.map do |i| all_results.find{|list| list[i] != nil }[i] end } end