[ruby-dev:45300] Re: GVL改善案

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2012-02-29 21:35:56 UTC
List: ruby-dev #45300
> 簡単な例だとこんな感じ。
>  ruby -e 'Thread.new{loop{}}; loop{p Time.now.usec; Thread.pass}
>
> ruby-coreでは賞金までかけられてますが([ruby-core:42972])、ず
> ばりこれが原因です。

usaさんとIRCでちょっと議論したんですが、片方がbusy loop で片方が
Thread.passで紳士的に振る舞った場合、まっとうなインプリである限りどう実装してもbusy loopが暴れるんじゃないですかね。

time sliceを短くすれば現象が見えにくくなるけどそれが解なのかなあ


残念なことにtkのコードってたまにThread.passで譲るけど、イベントない時でもbusy
loopしつづけるようなので、tkのイベントスレッドにCPUを優先的に割り当てるボーナスを実装すると、こんどはバックグラウンド処理のほうがまったく動かなくなりそう

In This Thread