趣旨
ボーボボを秋葉原のブックオフでまとめ買いしたんだけどレシートの印字から面白すぎて泣いちゃった pic.twitter.com/0WmibrI9vL
— 公太郎(アペリス教信者) (@ObenNKT) November 14, 2020
ツイッターで見かけたボーボボのレシートがマルチスレッドの勉強になるかなー、と思ったので投稿します。
なぜ Ruby か?
いま Python を勉強しているので、Python でスレッドの勉強しようかなー、って思ったけど、書きなれている Ruby をチョイスしました。GIL とかあるので、Java か C++ を使うべきなのでしょうけど、めんどいのでやりません。
コード
(1..28).map{|i| Thread.new{ puts "ボボボーボ・ボーボボ(#{i})" } }.map(&:join)
ボボボーボ・ボーボボ(1)
ボボボーボ・ボーボボ(16)
ボボボーボ・ボーボボ(28)
ボボボーボ・ボーボボ(4)
ボボボーボ・ボーボボ(5)
ボボボーボ・ボーボボ(7)
ボボボーボ・ボーボボ(8)
ボボボーボ・ボーボボ(9)
ボボボーボ・ボーボボ(10)
ボボボーボ・ボーボボ(18)
ボボボーボ・ボーボボ(6)
ボボボーボ・ボーボボ(21)
ボボボーボ・ボーボボ(11)
ボボボーボ・ボーボボ(12)
ボボボーボ・ボーボボ(20)
ボボボーボ・ボーボボ(22)
ボボボーボ・ボーボボ(26)
ボボボーボ・ボーボボ(23)
ボボボーボ・ボーボボ(13)
ボボボーボ・ボーボボ(14)
ボボボーボ・ボーボボ(15)
ボボボーボ・ボーボボ(17)
ボボボーボ・ボーボボ(19)
ボボボーボ・ボーボボ(25)
ボボボーボ・ボーボボ(27)
ボボボーボ・ボーボボ(2)
ボボボーボ・ボーボボ(24)
ボボボーボ・ボーボボ(3)
おわりに
これはスレッドの勉強じゃないだろ、って?俺もそう思う。