松尾です。

# 出てこれなくて済まんです。ちょっと忙しくて…。

今のスレッドのあり方に、多少なりとも(僕のとは異なるかもしれませんが)疑
問、違和感がありうる事が分かっただけでも収穫です。

--

もしこれからも議論が続くのなら、スレッドの参照を明示的に持っておかない
とGCされる、という僕の最初の話は一旦忘れて頂けないでしょうか? 見てる所、
一方はスレッドのあり方の話をしたいのに、一方はGCされる実装について不便
な点を語ろうとしているような。

僕が書いたのは、最も初歩の提案の一つに過ぎないんです。


From: Jun Adachi <adachi / tpegasus.lab.okidata.co.jp>

> そこで、オブジェクトを拡張して制御も含んだものを『オブジェクト』とみな
> したい。そのための一番てっ取り速い方法として、Threadをその『オブジェク
> ト』を入れる仮の器とみなしてプログラムを試みた。その結果、一時的な『オ
> ブジェクト』に関して、

これは1オブジェクト1スレッドなモデル? 確かにそれが単純で分かりやすいし、
実際好きなんですが

> > # どんどんnewしてどんどん使い捨てていきたいのです.
> という発想になっている。

と関連しているかどうか、自分では不明です_o_ なんとなく相関が有りそうで
はあります。


From: "NAKAMURA, Hiroshi" <nakahiro / sarion.co.jp>

> スレッドオブジェクトは,
> 「スレッドコンテキスト切り替え屋さん」が参照してるから,
> いけね,紐付けしてるから,GC屋さんに削除されない

> ってのはどうでしょ.^^;

ええ。とにかく誰かが紐の端を握ってるから、という解釈なら歓迎です。で、
その「誰」が「切替え屋さん」でいいの? 誰なら一番奇麗なの? みたいな疑問。

> オブジェクトのライフタイムは,
> そのオブジェクトを生成したスレッド(が実行するコード)に依存するので,
> 「Rubyのスレッドには親子関係がない(main thread対その他,を除く)」
> という設計と対立しちゃいますね...

例の「どのスレッドがシグナルを受け取るのか」って問題ですよね(解決済み
だっけ?)。これも親子関係を入れればいいんじゃない? 子が受け取ったシグナ
ルは処理されるまで親に。更に親が死ねば子が死ぬ、親子関係がルートから辿
れなければ死ぬ、とか。

# これだとスレッドの紐は親スレッドが握ってるようなイメージ。あ、双方向
# 必要だ。

> 変更によるメリットが感じられるコード例とかありますでしょうか.
> ちょっと考えたんですが,思い付きませんでした...

シグナルの話も一緒に解決できたら、嬉しいかも。