なかだです。

At Mon, 27 Nov 2000 13:31:45 +0900
Tanaka Akira <akr / m17n.org> wrote:
> > このあたりは「スレッド」と呼んでいるものが、オペレーティング・システム
> > でどのように実装されているかに依存するのではないでしょうか。
> > 
> > 1. 完全にユーザ空間だけで実装
> > 2. カーネルのサポートがあり
> > 3. カーネルの中まで完全スレッド
> 
> スレッドの実装よりもスレッドの用途に依存する気がします。

  用途というか、親子で競合するかどうかとか。

> 外部と通信しているスレッドで fork によってコピーされる場合を考えると、
> 通信相手から見ると、いきなり相手が分裂してそれぞれ勝手なことをわめき、
> こちらから話しかけるとどちらに届くかわからない、というひどく困った状況
> になります。これは実装に関係なくまずまちがいなく死んだ方が適切です。

  fork() によってファイルディスクリプタは共有されますが、

> 外部と通信していないスレッドはかならずしもそうではありません。想像する
> に、たとえば、incremental GC をスレッドで実現しているとすると、このス
> レッドを fork 時に殺すわけにはいきません。(そのへんの話には疎いので本
> 当にそういうものがあるかどうかは知りませんが。)

  GC の対象であるメモリは共有されません。

> 実装によって死ぬのが適切か死なないのが適切なのかが変わる例としてはどの
> ようなものがあるでしょうか?

  ということで、実装よりも親子の同じスレッド間で競合が問題になるかどうか
じゃないでしょうか。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦