2018-04-26Techc, Japanese, Ruby (English Version) Rubyのスレッド切り替えのトリガーは? 昨日参加したkawasaki.rbで、スレッドの実行の切り替わりのタイミングがよく分からない、という話題がでました。 Ruby1.9でネイティブスレッドを用いた方式になったけれど、GVL(Giant VM Lock)の仕組みでIO以外の処理では同時に実行されるスレッドは1一つに制御されている、というような説明をネットで見かけました。 もしIO処理やスリープのタイミングでしかスレッドが切り替わらないとすると、下記のようなスレッド内でビジーループな処理をしているコードを動かすと・・・ for item in %w(first second third) puts item Thread.fork item do |param| (1..10000).ea