なひです. 反応が遅くてすいません. > From: 中村 暁史 [mailto:anakamur / exa.i-tech.co.jp] > Sent: Thursday, March 18, 1999 5:43 PM > 人生至る所、ただし稠密でなく(笑)、青山あり… 「稠密」...読めない... ちなみになひは,件の「がらん」もしばらく読めませんでした.^^; 心の中で「ほげほげとバザール」とつぶやいていたのでした. > そういやMglのソースを冷静に眺めたら勝手ににexit(1)してる所があったり(^^; > 特にooなRubyとお見合いさせようとする時に「勝手に消滅」は > 非常に困るなぁ…と。 使う側のリソース(死ぬる権利)を勝手に使うライブラリは, 使うのに苦労しますね...TCPを半二重にしか使えない プロトコルスタックとか...あ,愚痴が... > ->VisualTestとかいうWindows用自動テストツールのβテスタを > テストツールのテストっすか。 > テストツールってーと要するにコントロールツールなので > そのソフトをコントロールするRuby…うわぁマトリョーシカ… 「マトリョーシカ」...読めな(もういい ^^;) VBライクな言語で, 「とある名前のウィンドウにメッセージ(イベント)を送れ」とか 「現在フォーカスの当たっているウィンドウをSPYして 表示されているテキストをかっぱらってこい」とか 指示するんですよ... 元がMicrosoftの製品だからなんですが(現在はRational Software). Rubyで書かせてくれー... / / / いけね前置きが長い. で,本論の「Rubyでは,signalをどう扱うと『楽しくプログラミング』か」 ですが(勝手に長くするヤツ),とにかくsignalは - 割り出しsignal(同期的にOSから飛んでくる) - 割り込みsignal(非同期に別プロセスから飛んでくる) というクラスに分けることができて, それぞれ「期待するデフォルト時の動作が違いそう」 ということ,でよいのでしょうか. # なひも「割り出し」という用語については,初耳でした. # 勉強になります. signalから,上述のクラスが一意に定まると, Ruby本体側での処理が楽ですね.定まるかな? ちょっと考えてみました. 割り出し(同期的): PIPE,FPE,SEGV,etc... 割り込み(非同期的): ALRM,HUP,INT,KILL,USR1,USR2 割り出しsignalは,その時点で実行しているスレッドで例外を発生させて, 割り込みsignalは,main threadに例外を発生させる (main threadが悪いわけじゃないけど,プロセスに飛ばしたsignalを, プロセスを代表するスレッドに処理させる,という意味で...) どうかなどうかな.穴を指摘してください > みなさん 割り込みsignalに関しては,A.中村さんのアイデアのように, main threadに飛ばすかわりに,新thread生成というテもありますね. ただ,signalハンドラとしては, ちょっとオーバーヘッドが大きいような気もします.^^;; ハンドルされなかった割り出し例外は, 柳川さんから「main threadへ飛ばす」という案がありましたね. さもなくば,そのままプロセス終了ですか... main threadに飛ばした時に,正しくリカバリ処理できるでしょうか. # リカバリしない場合は,ENDブロックに何か書いとけばいいわけですもんね. 「なんか知らんがスレッドが死んでしまった. 理由はよくわかんないけどまぁいいや. もう一度スレッド作っとこ」 みたいな...^^;;;