From: SASADA Koichi Date: 2013-03-02T12:57:41+09:00 Subject: [ruby-list:49243] Re: シングルコアでのthread動作 ご指摘ありがとうございます。 実は、私の環境(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