From: OOTANI TAKASHI Date: 2013-03-06T21:11:39+09:00 Subject: [ruby-list:49259] Re: シングルコアでのthread動作 大谷です。 そちらでも再現ということで安心しました。 「時々再現」 ということですが、こちらではシングルコアだと、必ず再現します。 VirtualBoxとVMwareで多少現象が違うんですかね。 シングルコアの実マシンでも試してみたいけど、身の回りには無いです。 (古いPCはあるけど多分最新のLinuxは動かない) よろしくお願いします。 From: SASADA Koichi Subject: [ruby-list:49243] Re: シングルコアでのthread動作 Date: Sat, 2 Mar 2013 12:57:41 +0900 > ご指摘ありがとうございます。 > > 実は、私の環境(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 > > -- OOTANI TAKASHI