From: matz@... (Yukihiro Matsumoto) Date: 2000-10-17T12:06:13+09:00 Subject: [ruby-dev:11253] Re: $SAFE=4 で Thread.new まつもと ゆきひろです In message "[ruby-dev:11252] Re: $SAFE=4 で Thread.new" on 00/10/17, Kazuhiro NISHIYAMA writes: |> 既に書きましたが、$SAFE = 4ではabort_on_exceptionが有効でな |> くなる方が現実的ではないですか? | |ということは例外が起こったときに abort_on_exception かどうかは |以下のような順番で見ていくようになるということでしょうか? | |$SAFE = 4 なら false(相当) (これが増える) |-d なら true(相当) |Thread.current.abort_on_exception の値 |Thread.abort_on_exception の値 順番ってのは正確でないですね。 |$SAFE = 4 なら false(相当) (これが増える) でなければ |-d なら true(相当) |Thread.current.abort_on_exception の値 |Thread.abort_on_exception の値 の or です。 |Thread.newの時に親スレッドのThread.current.abort_on_exceptionが |新しいThreadのThread.current.abort_on_exceptionになると思って |いたのですが。 abort_on_exceptionは引き継ぎません。引き継ぐのは $SAFE と priority と所属している ThreadGroup だけです。 abort_on_exceptionの状態をなぜ引き継がないかと言うと * -dまたはThread.abort_on_exceptionが真ならそもそも引き継 ぐ必要がない。 * abort_on_exceptionはそもそもデバッグ手法で日常的に使うも のではないので有効範囲を広く伝搬することに意味を見出せな かった。 というような理由です。 まつもと ゆきひろ /:|)