原です。

|佐藤@東邦大です。
|
|スレッドについての質問です。
|
|複数の終了タイミングの異なるスレッドを起動し、最後のスレッドが終了する
|まで待つプログラムが必要になったので、どうやったらいいか考えながら書い
|てみたのですが、
中略
|でもこれだと、終了待ちしてるときにCでいうところのfor(;;);と同様にCPUを
|喰いつくすように見えます(実際そんな感じみたい)。

そうですね。モニターしている方では小さな sleep でも入れると大きな効
果があるみたいです。

|どのようにすると喰いつくさない待ちを実現できるのでしょう。

各スレッドが終了する時自分を tarray から delete したらどうでしょ
うか。

|あと、待っている側で特定のスレッドが終了したことを検知する方法はどうい
|うものがあるのでしょうか。

やっぱりこの tarray の様にするんじゃないかな。Thread#raise で特定の
スレッドに例外を発生させる事ができるので、それを利用する手もありま
すね。前にスレッド間での throw & catch を提案した事もあったけど、
特に必要な事例があがるまでおアズケとなっています。(^^