From: Takashi Ikeda Date: 1999-10-03T04:45:54+09:00 Subject: [ruby-list:17340] Re: Ruby explanation 池田です。 kjana@os.xaxon.ne.jp (YANAGAWA Kazuhisa) writes: > # Cc: けずりました. あれ、ついてましたか…。申し訳ありませんでした。 > In message > cercine@kcn.ne.jp writes: > > > Masato KIYAMA writes: > > 確かに、これは「本当の」マルチスレッド(下手するとマルチタス > > ク)を知っている人のために書く表現ですよね(^^; > > もちろん、正確さを求めることは必要ですが。 > > ユーザレベルスレッドが一般化されたライブラリとして存在していようが > (CThread とか StackThread とか),言語独自で実装していようが(Java の > green thread とか SR とか),はたまたカーネルスレッドを利用していよう > が(MS-Windos{9[58],2000,NT} とかSolaris 2.* とか),複数のスレッドが > 動いているならそれはマルチスレッド.「本当」も「嘘」もない,というのも > 余談. 確かに、文字の誤認がありました。僕としてはスレッドというと、 他の人は機械語レベルでコンテキストスイッチしているものを想像 しているのかと思い、本当という言葉を使わせて頂きました。申し 訳ありません。 > > 「また、言語レベルでスレッド処理を行うため、OSの種類によらず、 > > 並行処理が簡単に書ける。」 > > > > にしましょうか…。先の「マルチスレッド」だともろpthreadですし… > > 複数のスレッドを使えるんだからマルチスレッドで何も問題ないわけですけど, > 現実に「マルチスレッドとは pthread を利用する事だ」という認識をしてい > る人がいる以上,「違う」という事がわかりやすいように書いてある必要があ > るようですね. 既に、次のように変更したものを辞書検索の人に送っております。 説明していなかった分はひらにご容赦を… ・また、言語レベルでスレッド処理を行うため、OS の種類によら ず、並行処理が簡単に書ける。なお、Ruby は、OS レベルによる スレッド(Windows のスレッド、あるいは pthread など)や fork(2) を利用せずに、あくまでインタプリタ上でスレッド機能 を実現している。 > 「スレッド処理」というのが曖昧,っていうか ruby インタプリタがマルチス > レッドで動いているみたいに見えなくもないのでもう一捻り必要でしょうか. ただ、Rubyが外部に影響を与えないスレッドを利用しているという ものを伝えるための情報量が辞書としては大きくなり過ぎるのでは という懸念もあります。拡張ライブラリとしてCで無限ループを書 いた時点でも、Rubyとしてスレッドが動いてくれることを期待する 場合を阻止するのには、どれだけのことをここの辞書の性格に合う よう、簡潔に書けば良いのかを決めるには僕には手に余ります。 …出来れば上の文章を再考、吟味して頂きたく思います。 > # そら将来 ruby インタプリタがマルチスレッド化されて,incremental な並 > # 列 GC をつむ,っていう事もあるかもしれませんが. 悲願ですね… 出来ればniceできて欲しい… > 「言語処理系が独自のスレッドライブラリをもっているので,どのプラット > フォームでも簡単に並行処理が書ける.」 > > ぐらいの事をもっとわかりやすく言えれば良いのではないか,と. 上でも分かりにくいですよね…僕の文章力なんてこんなもんです。 吟味は、全面的にお譲り致します(_o_) > # 各プラットフォームの native なスレッド機能を利用していないのでスケ > # ジューリングのタイミング以外は動作の差異がない,っていうのもあるけど. FAQにも、Rubyのthreadだと、スラッシングがない、とかいう記述 もあるほどですから、どこまで精度を高めれば良いのか、分からな くなってきました… -- 池田 孝志 cercine@kcn.ne.jp