我的 ruby 构建脚本中有一个循环,它遍历每个项目并调用 msbuild 并执行各种其他操作,例如缩小 css/js。
每个循环迭代都独立于其他循环迭代,所以我想并行化它。
我该怎么做呢?
我试过了:
myarray.each{|item|
Thread.start {
# do stuff
}
}
puts "foo"
但 ruby 似乎立即退出(打印“foo”)。也就是说,它在循环上运行,启动了一个线程负载,但是因为在 之后没有任何东西each
,ruby 退出杀死其他线程:(
我知道我可以做到thread.join
,但如果我在循环内这样做,那么它不再是并行的。
我错过了什么?
我知道http://peach.rubyforge.org/但是使用它我会得到各种奇怪的行为,这些行为看起来像我不知道如何解决的变量范围问题:(
编辑:如果我可以在放置“foo”之前等待所有子线程执行,或者至少是主 ruby 线程退出,那将很有用。这可能吗?
谢谢