[ruby-dev:31842] 拡張ライブラリ内での SIGVTALRM

From: とみたまさひろ <tommy@...>
Date: 2007-09-24 14:03:27 UTC
List: ruby-dev #31842
とみたです。

Ruby でスレッドを生成すると SIGVTALRM が 10ms 毎に通知されて、それで
Ruby スレッドのコンテキストスイッチが制御されていると思うのですが(処理
系によるかも)、C で書かれた Ruby の拡張ライブラリに制御が移っても
SIGVTALRM は通知され続けますよね。

拡張ライブラリ内で SIGVTALRM があがると困るような場合は、拡張ライブラリ
側で rb_thread_stop_timer() と rb_thread_start_timer() で処理を括るとか、
SIGVTALRM をブロックするとかして対処しないといけないのでしょうか。

今までそのような認識は無かったのですが、 Solaris10 上の MySQL/Ruby 実行
中に poll() が SIGVTALRM で EINTR になって失敗するという事象があったと
いう連絡を受けたので、どうしたものかと…。

この辺について対処しているライブラリを見たこと無いのですが、どうするの
が正しいのでしょうか。

-- 
とみたまさひろ <tommy@tmtm.org>
3469 42CC 4D32 F53C AD98  65A5 8C37 FF09 69C1 6040

In This Thread

Prev Next