From: Masatoshi SEKI Date: 2003-01-02T08:07:37+09:00 Subject: [ruby-dev:19283] Re: ruby-1.8.0 / yield(nil)とyield()の 咳といいます。 >> う。するどい。でも、わざと依存してるわけじゃないですよ。 >> # yield周りのところだけじゃないかな。 > > 安定してる所だけを使って書いたほうがいいと思います。 もちろんそうしたいのはやまやまです。 > >> そういうわけでLocalJumpErrorなんです。 >> [ruby-dev:18453] Re: break from proc-closureの症状が発生してしまいました。 >> >> 以前田中さんに書いていただいた再現スクリプトで示すと次のようになります。 > > それを抜きだしたときに思ったのですが、ブロックを与えられたのと違うスレッ > ドで yield したときの挙動に依存するのは不安定だと思います。 不安定というのは仕様がですか? それとも挙動が不安定なのでしょうか? > そして、実を言えば、LocalJumpError にしなくても実現できるんじゃないか、 > と疑っています。結局は手続き呼び出しなんだから、スタックの実体がクライ > アントとサーバにわかれているとはいえ、概念的にはひとつのスタック/スレッ > ドなわけで、ブロックをその(クライアント側の)スレッドの上で動せば、ブロッ > ク内の break/retry でクライアント側のスタックが縮んでbreak/retry に応 > じた適切なところに制御が飛ぶし、そのときに ensure を使ってサーバ側に残っ > ているスタックを適切な所まで縮めればそれで済むんじゃないか、と思ってい > ます。 ふむむ。実現できたらいいなあ。 いまのRubyが持ってるしかけでやるにはどうしたらいいんだろう。 ちょっと考えてみます。 ブロックの内でbreakやretryが行われたことを知るにはどうしたら いいんだろう。またそれをサーバに伝えるには…