2012/11/9 Tomoyuki Chikanaga <nagachika00 / gmail.com>:
> 近永と申します。
>
>> 1.現状のインプリが正しい。トラップハンドラはグローバル変数に書き込んですぐ抜けるべし
>> 2.mutexはトラップハンドラで使えないが、IOは使えるべき。
>> 3.mutexもIOもトラップハンドラから使えるべき
> なんでも使いたいユーザー目線としては 3 がいいのでしょうが、わたしの感覚では 2 だと思います。シグナルハンドラ内で mutex
> 使えないというのは納得感がありますが IO できないというのはあまり自明でないというのと、次に書くように実際の用途があると思います。
>
>  子プロセスの終了を SIGCHLD で検出するために、トラップハンドラ内でロックが使えないので pipe
> を使ってトラップハンドラで書込み、監視するスレッドで IO.select
> で待って読むというのをやったことがあります。ロックも使えないしIOもできないとなると、変数に代入して監視するほうは polling
> で検出するしかなくなり、その場合シグナルの喪失がありえると思います。

この意見はなっとくできますし、他に意見もでてないようなので2で進めます。ただ制限が緩くなる方に変更するのはいつでもできるので蒸し返しは歓迎します。


>> ・そもそもトラップからthrowして制御を戻すのは合法か?
> 感覚的なことしか言えなくて申し訳ないのですが、これはさすがに無しじゃないでしょうか。

だれか stackoverflowに書き込みできる人はあれにレースがあるよ、動かないよとコメントしてあげてください。
急遽アカウント作ったものの作りたてのアカウントではコメント書き込みできないみたい