Rubyでスレッドセーフでないことを簡単に確認したい

RubyのスレッドにはGiant VM lock (GVL) (Global Interpreter lock) が実装されており、同時に実行される ネイティブスレッドは常にひとつです。なので、スレッドセーフでないプログラムを実行しても、排他制御が効いているように見えます。 例えば次のコードを実行すると variable = 0 flag = true threads = 5.times.map…