class Array def dmap(&block) sender = Sender.instance lambda = sender.prepare_lambda(&block) result=[]; threads =[] self.each_with_index{|value,index| threads << Thread.new() { result[index] = sender.call(lambda, value) } } threads.each{|t| t.join} result end def aeach(&block) sender = Sender.instance lambda = sender.prepare_lambda(&block) threads =[] self.each{|value| threads << Thread.new() { sender.call(lambda, value) } } threads.each{|t| t.join} self end end