# list0703.rb require 'thread' mem = 0 # 子スレッドで共有して使う変数 t1 = Thread::fork{ # 1つ目の子スレッドが1000回だけ2を足す 1000.times{ x = mem sleep(0.01) # 違いを出すため mem = x + 2 } } t2 = Thread::fork{ # 2つ目の子スレッドも1000回だけ1を足す 1000.times{ y = mem sleep(0.01) mem = y + 1 } } t1.join # 1つ目の子スレッドの終了を待つ t2.join # 2つ目の子スレッドの終了を待つ puts mem # 無事 mem = 3000 になるか?