背景 QAエンジニアの代慶です! Rubyのマルチスレッドプログラミングで思いもよらぬ挙動が起こることを知ったので、 それを記事としてまとめてみます。 結論 以下のサンプルコードで自分が期待していない挙動が起こりました。 class A def initialize end def method(param) @result = params # 処理①:インスタンス変数の更新 sleep 0.0001 # 処理②:長く時間のかかる処理 @result # 処理③:インスタンス変数の参照 end end a_instance = A.new [1, 2].map do |i| Thread.n…