From: Yukihiro Matsumoto Date: 2005-06-13T01:35:57+09:00 Subject: [ruby-dev:26350] Re: rb_gc_mark_threads spin まつもと ゆきひろです In message "Re: [ruby-dev:26348] Re: rb_gc_mark_threads spin" on Mon, 13 Jun 2005 01:17:20 +0900, Tanaka Akira writes: |> これはtrapの話ですよね。それは認識しています。trap以外でその |> ようなケースを御存じですか、という話です。 | |trap 以外には知りません。 ああ、よかった。 |えぇと、話の流れがわからなくなってしまったので少し考えてみたのですが、 |もしかして『今回はrb_exit()という話ですから』というところから考えると、 |rb_exit は Kernel#exit とかからも呼ばれるからそっちからの流れでも問題 |があると受け取ったんでしょうか。 例によって私はお馬鹿な見落としをしてしてるんじゃないかと疑っ ていたのです。ruby-dev参加者の中で一番信頼できないのが私です から(苦笑)。 |sigexit と rb_exit の間に関数をひとつ新設したほうが適切だったかも知れ |ませんね。 そっちの方で手当てしてみます。 |> 完全に(or 十分に)安全なsignal handlingを実現するのは簡単で |> はありませんが、それでもせめてtrap "EXIT" は main thread |> で直接 exit するべきでしょうね。完全ではないけど、少しはマ |> シになるから。 | |マシになるかどうかについては疑いを持っています。 結局criticalなタイミングで割り込みが入ってしまうとだめだから ということですね。確かにそうですね。割り込みはmain threadで 発生すべきという一貫性と安全性は関係ありませんね。 sigexitも安全なタイミングで実行した方が良いのでしょうか。そ れとも「終了することが目的」だから終われば良いとみなすべきで しょうか。ちょっと悩ましいですね。 |えぇ。いつくるかわからず、遅延が必要だが遅延させすぎてはならない、とい |うあれです。EXIT に関しては、遅延させすぎる可能性よりは危険を受け入れ |て遅延しないというのもひとつの見識であろうと思うわけですが。 うーむ。 まつもと ゆきひろ /:|)