From: matz@... (Yukihiro Matsumoto) Date: 1998-05-29T15:46:54+09:00 Subject: [ruby-list:8125] ruby-thread (Re: Re: ruby との出会い) まつもと ゆきひろです In message "[ruby-list:8124] Re: ruby との出会い (Re: Re: cathedral v.s. bazaar)" on 98/05/29, senda@ic.rdc.ricoh.co.jp writes: |ラベルつきブロックは痛いですね。Perlではcase文がわりに使われるので。 |ラベルつきブロック+lastのパターンだけみつけて対応するとか。。。 効率を気にしなければcatch/throwで実現できると思います. |私はあまり魅力的ではないと思います。現状ではthreadライブラリでSMPマシン上 |のLWPが効率的に動く(threadとLWPが多対多の関係の2 levelモデル)のはSolarisだ |けだし(認識不足?)、ソフトウエアthreadやCPUが1つしかない場合は言語処理系で |threadをサポートしている場合(昔風にいうとco-routineかな)と効率は変わらない |からです。 そーかぁ,そういうものなのね. |pthread_attr_init()でthread属性として設定できるようです。 ええ,でも途中で変えられないし.今のスレッドの実装だとどんな にスタックが伸びても適当にヒープにコピーしてくれるんですよね. |処理系レベルのthreadを採用しているせいでrubyのthreadは組み込みメソッドがす |べてthread-safeに自動的になっています(だからArrayとかStringとかに関する操 |作はすべてthread-safeでなんか直感に反してしまう)。もし、pthreadなど下のレ |ベルでthreadを実現すると、こいつら(組み込みメソッド)にことごとく条件変数で |排他制御ブロックを突っ込まないと互換性が保たれなくなってしまいます。 あ,そうそう.thread-safeの話を忘れてました.これも懸念材料 の一つだったのです. そういえば,PythonとかはOSネーティブのthreadをサポートしてる んですが,どこでも動くわけでないのと,このthread-safeの問題 でいまいち安心して使えない感じがします. thread-safeの方はインタプリタ全体にglobal lockをかけて結果的 にpreembtiveにしてるみたいです.インタプリタをthread-safeに するパッチは存在するみたいですが,組み込み関数レベルではやっ ぱり明示的にブロックしないとまずいみたいです. |matz> |3. ruby reference card |matz> | perlにあるようなやつです。これがあるとないとではプログラム作りの大変 |matz> | さがずいぶん変わってきます。 |matz> |matz> 文法だけだったら,一応あるのはあるんですね[ruby-list:3257]. |matz> クラスについても含めたものはruby本の巻末につく予定です. | |わーい。 でも,まだ書いてないんですよ.;_; |# inf-ruby.elの新しいやつを次のbetaのsampleの下に含めてほしい |# なっと。> まつもとさん 新しいやつって1.4ですよね.1.1b9_23には含まれていると思うん ですが.なんか間違ってた? まつもと ゆきひろ /:|)