なひです.

反応が遅くてすいません.

> 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ブロックに何か書いとけばいいわけですもんね.

「なんか知らんがスレッドが死んでしまった.
  理由はよくわかんないけどまぁいいや.
  もう一度スレッド作っとこ」
みたいな...^^;;;