# 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 になるか?