From: Masatoshi SEKI Date: 2000-12-02T23:25:20+09:00 Subject: [ruby-dev:11681] Re: fork_and_kill_other_threads 咳です。 > > |fcntl(など)を f2 に発行できるようにするか、 > > |fork した当の thread 以外の thread をすべて有無を言わさず殺すような fork > > |(Thread.fork_and_kill_other_threads とか?)があるといいんじゃないかなぁ、 > > |と思っています。 > > > > forkとthreadを混ぜるのはかなり問題の元です。 > > いっそ、fork_and_kill_other_threadsをforkの標準仕様にしちゃ > > いましょうか。 むう。main thread じゃないのがforkしたときはどうなるんでしたっけ ? それはそれとして、 forkを使う人は危険性とかをわかっててやってる気がするのですが そうでもないのかな。 咳は1.6.1のままでも良いと思うのだけど fork_and_kill_other_threads を 標準にしないとだめですか ? forkとthreadを混ぜるのはいつも危険なんですか ? 咳はforkってたまーにしか使わないけどthreadはよく使います。 その少ない経験ではfork時にthread停めるのは反対です。 いや、停めても良いんだけどオプションにしてほしいなぁ。 > この仕様だと、現行のRWikiが動かなくなります。 > 例えば現状のCVS版は既にこのように実装されていますので、 > RWikiはうまく動きません。 > dRuby用のthreadが死んでしまうためです。仕様どおりですね。 > で、どう対応しようか考えているんですが、 RWikiのforkの使い方は、たしか daemon にするためですよね。 なによりもまず fork してdaemonにしてから仕事にかかれば RWiki に関しては大丈夫だと思うのですが、どうでしょうか? とすると > 1. RWikiが、forkしてからdRubyを初期化するようにする。 1 ですね。 > 2. Rubyが、kill_other_threadsしなくなる可能性に期待して少し待つ。 > 3. dRubyが、「forkしたら初期化しなさい」というルールにする(するのは咳さん > > どれがいいですかねー? dRubyの仕様はRubyの決定に従います。fork で全ての thread が止まるなら、 1,3でしょうね。 でも、ほんとにそこまで必要なのかな。fork+execじゃなくてforkですよね。 そういう使い方って、自分がなにしようとしてるかわかっててやってるのだと 思うけど…。