• ベストアンサー

マルチスレッド:スレッドの終了を検知する(Ruby)

2つ以上のスレッドを生成・動作させ、それらが終了した時点で、メインに処理を移すといったことをRubyでしたいと思っています。 (スレッドが1つならば、メインをstopさせておき、スレッドの終了時に例外処理などを使ってrunさせる方法は思いつくのですが。。) 一つ考えたのは・・・ カウンタ変数をつくり、一つのスレッドが終了したらその値を増やす。 メインではwhileループによってその値を常に数えて、全スレッドの終了を把握する。 ただ無駄にwhileループを回してしまいます。。 一般的な効率の良い手段等あるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

joinメソッドでスレッドの終了を待つことができます。 参考URLを参照下さい。

参考URL:
http://www.namaraii.com/rubytips/?%A5%B9%A5%EC%A5%C3%A5%C9
skip_jack
質問者

お礼

スレッドt1 スレッドt2 t1.join t2.join main処理 という流れで処理できました。 こんなに簡単な方法があったんですね。 基本的なところでした。 解答ありがとうございました。

その他の回答 (1)

  • tetsumyi
  • ベストアンサー率25% (1946/7535)
回答No.1

スレッドが終了した時点で メインに処理を移すのであればマルチスレッドにする必要は無いと思うのですが?

skip_jack
質問者

補足

各フェーズの処理に時間がかかり、しかしシステムのリソースがあまっているため、同時に実行させたいと思っていました。

関連するQ&A