まつもと ゆきひろです

In message "[ruby-list:26176] Re: fork problem?"
    on 00/11/26, Tanaka Akira <akr / m17n.org> writes:

|>  というか、fork する以前の thread が新しいプロセス空間でまで動
|> いてくれて嬉しい状況というのが、ちょっと想像つかなかったんです
|> が。fork した時点でその thread が main になってそれ以外は存在し
|> ない、というのでどうでしょうか。
|
|それが fork_and_kill_other_threads の意図です。
|(書くのを忘れていたので追記しておきますが、殺すのは子プロセス側での話
|で、親プロセス側では当然、動いたままです。)

もちろん了解です。上記の意図は「それをforkの仕様にしようか」
というものです。で、以下の質問についてですが

|で、疑問なのはプロセス外との通信を(直接には)行なわない thread について
|です。thread プログラミングは素人(じつは今回初めて thread を使った)な
|のでよくわからないのですが、そういうものは fork 時にどのような振舞を示
|すのが適切なことが多いんでしょうか? それともそんな thread は普通使われ
|ない?

私も自分で実装しておきながら、Ruby以外でスレッドプログラミン
グをしたことはないのでなかなか判断できないのですが、

|ちなみに、The Single UNIX (R) Specification, Version 2 を調べてみると、
|fork(2) はまさに fork_and_kill_other_threads のような動作をするようで
|す。

というは重要なヒントだと思います。手元のpthreadで実験してみ
たら確かにそのような動作をします。というわけで、こちらの動作
を仕様にすることを真剣に考えてます。手元では実装できました。

                                まつもと ゆきひろ /:|)