rubyの組み込みメソッドがスレッドセーフか否かについて
以下のrubyのコードがrubyのバージョンによって挙動が違います。
これについて、公式のドキュメントはありますでしょうか?
また、組み込みメソッドがスレッドセーフかどうかは何を参照すれば良いでしょうか?
THREAD_NUM = 3
Array.new(THREAD_NUM) do
Thread.new do
10.times do
puts "hoge"
end
end
end.each(&:join)
puts "-"*5
Array.new(THREAD_NUM) do
Thread.new do
10.times do
print "hoge\n"
end
end
end.each(&:join)
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
$ruby thread.rb
hoge
hoge
hoge
hoge
hogehoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
-----
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16]
$ ruby thread.rb
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
-----
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge