From: SHUDO Kazuyuki Date: 2000-11-27T13:50:17+09:00 Subject: [ruby-list:26193] Re: fork problem? まつもとさん wrote: > |ちなみに、The Single UNIX (R) Specification, Version 2 を調べてみると、 > |fork(2) はまさに fork_and_kill_other_threads のような動作をするようで > |す。 > > というは重要なヒントだと思います。手元のpthreadで実験してみ > たら確かにそのような動作をします。 机の上から発掘された手もとの本「Pスレッドプログラミング」の 第 200 ページに次の文章があります。 システムコールの新しいセマンティクス … 新しいプロセスの fork fork()の古い定義によれば、カーネルは完全にプロセス全体を 複写することになっています。スレッドの場合、「すべてのス レッドとLWPを複写するのか?」という疑問が浮かびます。 fork()の最も一般的な使い方はそのあとすぐにexec()を呼び出 すことです。この場合、スレッドとLWP(注1)を複写するという 努力のすべては無駄になってしまいます。したがって、fork() を定義するには2つの方法が可能です。fork1セマンティクスで は、呼び出し側スレッドだけしか複写されません。forkallセ マンティクスでは、すべてのスレッドとLWPが複写されます。 POSIXは、fork1セマンティクスを持つようにfork()(およびす べての変形)を定義することに決めました。UIスレッド(注2)は forkallセマンティクスを選びました。 (注1) LWP Solaris 2 で言うところの LWP。 この本は元は Solaris スレッドの本で、改訂されて POSIX スレッドの本に なったので、Solaris を前提にした記述も多い。 (注2) UIスレッド 「POSIX 委員会が作業を終える前に SunSoft が Solaris 2 を開発する上で 使用したライブラリ。Solaris スレッド。」 とのこと。 pthread_なんとか、ではなくて thr_なんとか、という Solaris ネイティブなスレッドシステムを指すんでしょう。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh@muraoka.info.waseda.ac.jp