From: nobu.nakada@... Date: 2001-03-02T08:00:38+09:00 Subject: [ruby-dev:12337] Re: fork/thread なかだです。 At Thu, 1 Mar 2001 23:43:10 +0900, Masatoshi SEKI wrote: > まず問題が二つあると思うんです。一つはファイルなどの資源の話で > もう一つはスレッド。ファイルのcloseなんかはforkする方の責任で > 片付けるのかなあ、と思います。 たしか、こんな案があったと思います。 (1) オブジェクトごとに fork 時の振舞を指定する (2) fork した後に他のスレッドにそれ用の例外を投げる (1) は finalizer みたいなもの、(2) も (1) で実装できるかなと 思ってます。 > 残ったスレッドの方をどうするかなんですが、fork後にどのスレッドが最初に > 動き出すかわからないので制御しにくいみたいな話なかったでしたっけ? このへんはちょっとよく覚えてないですが。 > > > fork()の前後でThread停めればうまくいきそうな気がするんだけどなぁ。 > > > > 前後? 後だけじゃなくてですか。停めるというのは suspend じゃな > > くて kill という意味でしょうか。 > > Thread.critical = true です。 なるほど。 > forkする前には Thread.critical = true となっていて、 > fork後に親側は Thread.critical = false、子側は ciritical = trueのまま。 かなりの部分はこれでカバーできるような気がしますが、fork() し てさらに Thread を作る前にはやはりなんらかの対策が必要になりま すし、IO の問題は fork() 前に flush する必要があるので上記の (1) のようなものはあった方がいいと思います。 > 比較的早いうちにexecするようなものだとすると、 > Thread.critical = true だけで充分だったりしませんか? vfork() 的使い方ということですね。充分かも。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦