From: Tanaka Akira Date: 2003-01-02T00:51:41+09:00 Subject: [ruby-dev:19281] Re: ruby-1.8.0 / yield(nil)とyield()の In article <537C480E-1D9A-11D7-A418-000393814512@mva.biglobe.ne.jp>, Masatoshi SEKI writes: > う。するどい。でも、わざと依存してるわけじゃないですよ。 > # yield周りのところだけじゃないかな。 安定してる所だけを使って書いたほうがいいと思います。 > そういうわけでLocalJumpErrorなんです。 > [ruby-dev:18453] Re: break from proc-closureの症状が発生してしまいました。 > > 以前田中さんに書いていただいた再現スクリプトで示すと次のようになります。 それを抜きだしたときに思ったのですが、ブロックを与えられたのと違うスレッ ドで yield したときの挙動に依存するのは不安定だと思います。 そして、実を言えば、LocalJumpError にしなくても実現できるんじゃないか、 と疑っています。結局は手続き呼び出しなんだから、スタックの実体がクライ アントとサーバにわかれているとはいえ、概念的にはひとつのスタック/スレッ ドなわけで、ブロックをその(クライアント側の)スレッドの上で動せば、ブロッ ク内の break/retry でクライアント側のスタックが縮んでbreak/retry に応 じた適切なところに制御が飛ぶし、そのときに ensure を使ってサーバ側に残っ ているスタックを適切な所まで縮めればそれで済むんじゃないか、と思ってい ます。 -- [田中 哲][たなか あきら][Tanaka Akira]