[#46878] ML への投稿が blade.nagaokaut.ac.jp 以外にも — "ISHIKAWA Takayuki" <rechka_osaka@...>

石川と申します。この ML へ投稿した e-mail が

10 messages 2010/03/03

[#46909] gemを実行すると大量のワーニングメッセージ — garyo hosu <garyohosu@...>

こんにちはgaryoといいます。

16 messages 2010/03/16
[#46910] Re: [ruby-list:46909] gemを実行すると大量のワーニングメッセージ — Moru <lateau@...> 2010/03/16

44Oi44Or44Go55Sz44GX44G+44GZ44CCCuOBvuOBmmdlbeOBruODkOODvOOCuOODp+ODs+OCkuei

[#46911] Re: gemを実行すると大量のワーニングメッセージ — garyo hosu <garyohosu@...> 2010/03/16

モルさん。さっそくありがとうございます。

[#46983] Ruby Summer of Codeのアイデアとかメンターについて — Shintaro KAKUTANI <shintaro@...>

Asakusa.rbのかくたにです。

12 messages 2010/03/31

[ruby-list:46938] Loggerとスレッドについて

From: Yusuke Yamasaki <y-yamasaki@...>
Date: 2010-03-23 05:40:48 UTC
List: ruby-list #46938
山崎(ゆ)といいます。

スレッドで並列実行される関数内でRuby標準添付のLoggerを呼ぶと、
sleepを入れたのと似たような効果があり、関数の途中で、別のスレッドに実行権が移ることがある、というのは正しいでしょうか?

ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux]

具体的には以下の関数を並列実行すると、
最後の self_thread.kill の行で、
undefined method `kill' for nil:NilClass (NoMethodError)
が発生することがまれにあります。

  def end_signal_thread
    return unless @signal_thread
    $logger.debug "signal_thread1=#{@signal_thread}"
    self_thread = @signal_thread
    @signal_thread = nil
    $logger.debug "signal_thread2=#{@signal_thread}"
    self_thread.kill
  end

もし関数全体が排他的に実行されるのであれば、self_threadという変数にnilが入るということはないはずです。

sleepやThread.passなどを明示的に呼ばない限り、
別のスレッドに切り替わることはないと思っているので、
Loggerの中で処理を明け渡しているのかなと思いました。

よろしくお願いします。

_______________________
Yusuke Yamasaki <y-yamasaki@salvus.jp>


In This Thread

Prev Next