ルビー ビルド スクリプトには、各プロジェクトを反復処理して msbuild を呼び出し、css/js の縮小などのさまざまな処理を実行するループがあります。
各ループ反復は他の反復とは独立しているため、並列化したいと思います。
どうすればいいですか?
私はもう試した:
myarray.each{|item|
Thread.start {
# do stuff
}
}
puts "foo"
しかし、Ruby はすぐに終了するようです ("foo" が出力されます)。つまり、ループを実行し、スレッドのロードを開始しますが、 の後に何もないためeach
、ruby は他のスレッドを強制終了して終了します :(
できることはわかっていますthread.join
が、ループ内でこれを行うと、並列ではなくなります。
私は何が欠けていますか?
私はhttp://peach.rubyforge.org/を認識していますが、それを使用すると、解決方法がわからない変数スコープの問題のように見えるあらゆる種類の奇妙な動作が発生します:(
編集:「foo」を置く前に、または少なくともメインのルビースレッドが終了する前に、すべての子スレッドが実行されるのを待つことができれば便利です。これは可能ですか?
ありがとう