我正在学习 Ruby 中的线程,来自The Ruby Programming Language book 并发现这种方法被描述为每个迭代器的并发版本,
module Enumerable
def concurrently
map {|item| Thread.new { yield item }}.each {|t| t.join }
end
end
以下代码
start=Time.now
arr.concurrently{ |n| puts n} # Ran using threads
puts "Time Taken #{Time.now-start}"
输出:Time Taken 6.6278332
尽管
start=Time.now
arr.each{ |n| puts n} # Normal each loop
puts "Time Taken #{Time.now-start}"
输出:Time Taken 0.132975928
为什么没有线程会更快?是实现错误还是第二个只有puts
声明,而第一个需要时间进行资源分配/初始化/终止线程?