线程还是多个进程?

时间:2009-10-27 01:30:26

标签: ruby multithreading

运行ruby脚本的多个实例是否更有效?或单个脚本中的多个线程?

例如,用于检查给定域的所有链接的ruby脚本是否正常工作。

你会运行这个脚本的多个实例还是多个线程?

如何创建多个线程?

1 个答案:

答案 0 :(得分:3)

“效率”可能意味着许多事情。对于Ruby< 1.9,green threads意味着你不会得到你从线程中想到的那么多的并发性,所以使用多个脚本实例将是从开始到结束最小化总实时的最佳方法。

至于创建它们,这里是“并行”下载页面的he Pickaxe book示例:

require 'net/http'


pages = %w( www.rubycentral.com
            www.awl.com
            www.pragmaticprogrammer.com
           )


threads = []


for page in pages
  threads << Thread.new(page) { |myPage|


    h = Net::HTTP.new(myPage, 80)
    puts "Fetching: #{myPage}"
    resp, data = h.get('/', nil )
    puts "Got #{myPage}:  #{resp.message}"
  }
end


threads.each { |aThread|  aThread.join }