[ruby-list:49243] Re: シングルコアでのthread動作

From: SASADA Koichi <ko1@...>
Date: 2013-03-02 03:57:41 UTC
List: ruby-list #49243
ご指摘ありがとうございます。

実は、私の環境(VirtualBox VM + Ubuntu)でも時々再現しているんですが、実
マシンとかでは再現しないんですよね。ということで、ticket 化しようと思い
ます。シングルコアがキモなのかなぁ。

リリース前に、デバッガで少しおったのですが、ちょっと追い切れなかったとい
う感じです。ううむ。

(2013/02/28 23:05), OOTANI TAKASHI wrote:
> 大谷です。
> 
> Ruby2.0p0ですが、make test が終わらない!
> 
> ここの部分で引っかかっているようです。
> assert_equal 'true', %{
>   t = Thread.new { loop {} }
>   begin
>     pid = fork {
>       exit t.status != "run"
>     }
>     Process.wait pid
>     $?.success?
>   rescue NotImplementedError
>     true
>   end
> }
> 
> 少し変えて、
>   t = Thread.new { loop {sleep 1} }
> にすると終わります。これで、気づいたのですが、
> 使っているのはVMwareの仮想マシン上のCentOS6.3なのですが、
> CPUが1コアの設定でした。
> おそらく loop {} がCPUを使うのでメインスレッドが(ほとんど)動かないのだと思います。
> ・仮想マシンの設定を変えて2コアにすると終わる
> ・1コアでも一晩放置すると終わる(約6時間かかってました)
> 
> なぜ1.9.3と挙動が違うのでしょうか?ネイティブスレッドへの変更は1.9からですよね?
> 2.0と1.9.3でそれぞれ何度かずつ試してみたので、たまたまでは無いと思うのですが。
> 


-- 
// SASADA Koichi at atdot dot net

In This Thread