From: KOSAKI Motohiro Date: 2013-03-28T04:28:12+09:00 Subject: [ruby-list:49301] Re: 例外を飛ばすThread内ではpassをしないとそのThreadはjoinできないことがある? (3/27/13 8:51 AM), Isamu Mogi wrote: > こんにちは。茂木と申します。 > > Threadに関する質問です。 > るりまのThreadのページ http://doc.ruby-lang.org/ja/2.0.0/class/Thread.html に > 下記のような記述があるのですが、 > > ---------- > ■例外発生時のスレッドの振る舞い > (snip) > t = Thread.new do > Thread.pass # メインスレッドが確実にjoinするように > raise "unhandled exception" > end > t.join > ---------- > > Thread.passのコメントは、「内部で例外を発生させてそれをrescueしないままにするThreadでは、 > 明示的にpassを実行しないと親Threadにjoinができない可能性がある」という解釈で正しいで > しょうか? サンプルが間違ってるだけじゃないかな。Thread.passはあくまで一回パスにすぎないので、 一回パスしたことによって、メインスレッドが t.join の行までたどり着けるかは保証されてない。 まあ、もっともこの高々5行のコードで辿りつけないような状況・OSは思いつかないけれども。