- ベストアンサー
マルチスレッド:スレッドの終了を検知する(Ruby)
2つ以上のスレッドを生成・動作させ、それらが終了した時点で、メインに処理を移すといったことをRubyでしたいと思っています。 (スレッドが1つならば、メインをstopさせておき、スレッドの終了時に例外処理などを使ってrunさせる方法は思いつくのですが。。) 一つ考えたのは・・・ カウンタ変数をつくり、一つのスレッドが終了したらその値を増やす。 メインではwhileループによってその値を常に数えて、全スレッドの終了を把握する。 ただ無駄にwhileループを回してしまいます。。 一般的な効率の良い手段等あるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
joinメソッドでスレッドの終了を待つことができます。 参考URLを参照下さい。
その他の回答 (1)
- tetsumyi
- ベストアンサー率25% (1946/7535)
回答No.1
スレッドが終了した時点で メインに処理を移すのであればマルチスレッドにする必要は無いと思うのですが?
質問者
補足
各フェーズの処理に時間がかかり、しかしシステムのリソースがあまっているため、同時に実行させたいと思っていました。
お礼
スレッドt1 スレッドt2 t1.join t2.join main処理 という流れで処理できました。 こんなに簡単な方法があったんですね。 基本的なところでした。 解答ありがとうございました。