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
![Rubyのスレッドはタイムスライスで切り替わる? | Kishima blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/b1fa5bfc82efe6ca1beddb37e49f28ca038e2276/height=288;version=1;width=512/https%3A%2F%2Fsilentworlds.info%2Fwp-content%2Fuploads%2F2018%2F04%2Fruby.png)