From: Masatoshi SEKI Date: 2000-12-09T23:39:33+09:00 Subject: [ruby-list:26471] Re: fork problem? 咳といいます。 > > |Thread#kill_on_fork? > > |あるいは > > |Thread#on_fork > > |って仕掛けを作ったら、 > > |解決(unix世界前提での)にはならないんでしょうか? > > > > これは最近私が提案していること[ruby-dev:11718]と類似してます > > ですね。 fork時に各スレッドに ForkException とか raise させたらどう ?? 咳の勘では、スレッドごとというよりもそのスレッドのある局面ごとに fork時に期待する動作が異なる気がするので…。 > なひはこの案に同意します。その仕掛けがなくてもいいと > 思ってたけど([ruby-dev:11722])、「あったほうがいい」という意見が > あるのであれば採用にやぶさかではありませんつーか短期的になひは助かります。 咳としては、反論とかないです。 ただちょっと混乱してます。Threadが問題だったんでしたっけ ? ファイルとかの UNIXな資源が問題だったんでしたっけ ? forkしたら file 閉じてね、とか欲し かったりしませんか ? fork時にスレッドが殺されたら、スレッドのGCのタイミングでそのスレッド だけが参照しているファイルがcloseされるのを期待してって話もありません でした ? closeしたいんじゃなくて、ファイルにアクセスしないで欲しいって 話しでしたっけ ?? なんか Mutex つかんだまま死んじゃうとか、ありそうな気もする。そうすると 資源をつかんでいる間だけは fork で死なないとかあるのかな。 > 田中さん[ruby-dev:11684]からの流れで、まつもとさんも同意、なひも同意。 > 咳さんはどうですか?dRuby的には、 反論するにも同意するにも咳は理解が足りないみたいです。 dRuby的には、うーん、どうなんだろう。forkされてexecされちゃうなら なにもしないなぁ。スレッドなくなるもんね。fd の話だとするとどうなんだろう。 fork先でもdRuby使うのかなぁ。うーん。勉強不足でよくわかりません。 咳としては、咳はライブラリ・マニア(?)なのでそういった仕掛けが入ったら 一生懸命対応しちゃうんだろうなぁと思います。 で、そのときライブラリでforkのときにどう振舞うべきかどうやって決めれば よいのだろう、という不安があります。forkした、ってだけで振舞いが決められ るのかなぁ。forkして何するってわからないと決められない気もする。 こういう不安が出てくるのは、事例が少ないからでしょうか。 で、採用された後の対応としては、 > 1. 知らんぷり。[ruby-dev:11726][ruby-dev:11727]の通り、 > それでも問題ないと思います。 基本的にこれ。 > 2. dRubyが生成したスレッドで、明示的に「forkされても生き残るよ」と > 宣言するようにする。 という宣言をするきっかけをアプリにあげようと思います。 > どちらかでしょうか。 > # ・「forkされても生き残るよ」と宣言するライブラリは、あってもdRubyと > # debuggerだけだろうなぁ。 > # ・dRubyとdebuggerがそういう気を使って、どれだけの人が助かるんだろう。 > # もしや皆無。。。 お役に立てなくてすみません。ここ数日ずっとかんがえていたのですが、 こう、すっきりした切口が見つからないんです。ごめんなさい。